我有一个看起来像这样的git别名:
[alias]
unpushed = log origin..HEAD --pretty=format:'%h %an %s'
Run Code Online (Sandbox Code Playgroud)
当我在掌握时,这对于显示"未按下"的变化非常有用.但是,当我在分支机构时,这个别名并不能正常工作.
无论我是否在分支上,正确的命令是什么才能显示未按下的更改?
使用JGit,我想获得一个列表,其中列出了使用git log --name-status可能发生的更改。
这可能吗?如果是这样,您该怎么做?
对于提交的所有文件,我希望状态修饰符--name-status提供,以及提供的添加和删除行的数量--numstat.说我有以下内容:
> git log --pretty=format:"%aN %ct" --reverse --name-status --encoding=UTF-8 --no-renames
John Doe 1234567489
M foo/bar/foo.bar
A bar/hello.txt
Run Code Online (Sandbox Code Playgroud)
和:
> git log --pretty=format: --reverse --numstat --encoding=UTF-8 --no-renames
9 5 foo/bar/foo.bar
21 0 bar/hello.txt
Run Code Online (Sandbox Code Playgroud)
是否有单个命令/标志组合可以将它们的输出组合在一起?有点像这样:
John Doe 1234567489
M 9 5 foo/bar/foo.bar
A 21 0 bar/hello.txt
Run Code Online (Sandbox Code Playgroud)
我知道可以将它们与一些awk魔法结合起来,但是看到我将在多个大型存储库和性能问题上执行此操作,单个git log命令将更可取.
我想知道如何使git列出所有已更改的文件
我将首先为我的问题列出一个示例情况.
说我更改了以下文件:
未提交的更改
/site/main.php
/site/main.html
/site/includes/lib.php
Run Code Online (Sandbox Code Playgroud)
提交3
提交消息:"Bug xyz:做了一些改动"
/site/main.php
/site/main.html
/site/main.js
/test/test.php
/test/test.html
Run Code Online (Sandbox Code Playgroud)
提交2
提交消息:"Bug xyz:做了一些更改"
/site/main.php
/site/main.html
/site/includes/include.php
Run Code Online (Sandbox Code Playgroud)
提交1
提交消息:"错误abc:请注意,这是另一个错误"
/site/login.php
Run Code Online (Sandbox Code Playgroud)
说我还在研究bug xyz.现在我需要一个列表,列出目前在网站目录中已经更改的所有php文件.所以我需要以下列表作为输出:
/site/main.php
/site/includes/lib.php
/site/includes/include.php
Run Code Online (Sandbox Code Playgroud)
什么命令可以做到这一点?
我想在我的git存储库中测量"活动开发人员"
git shortlog --summary --numbered oldrelease..newrelease 给我一个最活跃的提交者列表,如下所示:
100 developer 1
90 developer 2
80 developer 3
1 developer 4
Run Code Online (Sandbox Code Playgroud)
但有时我会看到某些开发人员还原其他开发人员(或改进它).
现在,我想看看哪些开发者最积极地为此版本做出了贡献.给予代码更改的开发人员更多的权重,并减轻最终版本中其他人更改代码的开发人员的权重.
git diff oldrelease..newrelease
Run Code Online (Sandbox Code Playgroud)
可以在发布中给我所有更改的行.
我想'责备'所有这些线,以查看触及每个更改线的最后一个开发人员.怎么做?
接下来,对于所有更改的行,我想聚合它,以便最终得到这样的摘要.
git funky_new_command oldrelease..newrelease
developer 2 added 450, removed 200 lines
developer 3 added 500, removed 100 lines
developer 1 added 4, removed 50 lines
developer 4 added 1, removed 0 lines
Run Code Online (Sandbox Code Playgroud)
我认为这将为那些随着时间的推移对源代码库做出贡献的开发人员提供一个更好的想法,而不仅仅是那些提交大量文件的人.
如何在Git中显示单个文件的完整历史记录?当我使用git log <filename>或时gitk <filename>,我只会合并。我想查看影响文件的合并分支中的提交。我已经尝试过--follow其他标志,但找不到方法。
我喜欢以下命令打印出git日志的方式:
git log --oneline --decorate --graph
Run Code Online (Sandbox Code Playgroud)
每当我使用git log时,我想将其设为默认格式.有没有办法编辑~/.gitconfig默认启用oneline,decorate和graph?
是的,我知道我可以将这些选项别名为另一个git命令别名,但我宁愿默认使用这些选项打印出来.
我之前遇到过错误(GIT错误:对象文件为空)

然后我用了如何修复GIT错误中提到的方法:对象文件是空的?
我更新头指针的好对象后,当我重新启动机器它的工作.但是,同样的错误(目标文件是空的)发生.我试图find . -type f -empty -delete删除所有空文件并键入git fsck --full然后发生新错误.(GIT错误:HEAD:无效的reflog条目xxxxxxxxxxxxxxxx)

我的GIT有什么问题吗?还是仅仅因为我的不良行动?以及如何解决这个问题?
我想在我的分支位于origin分支之前时查看git commits。
我试过git log 它返回所有提交。但是,我只想查看ahead commits从分支到起源/分支的信息
我的意思是
Run Code Online (Sandbox Code Playgroud)On branch permissions Your branch is ahead of 'upstream/permissions' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working directory clean
在这种情况下,我想查看2次提交
我正在创建一些脚本和程序来使用以下方式获取提交信息
git log --pretty=<my format> -1 <commit>
Run Code Online (Sandbox Code Playgroud)
我想知道此命令的输出是否适合由程序(管道)解析或仅打算呈现给人类(瓷器)。例如,在某些项目中,我使用以下命令获取提交SHA +作者名+提交摘要:
git log --pretty="%H%n%an%n%s" -1 HEAD
Run Code Online (Sandbox Code Playgroud)
然后,我用换行符分割输出字符串(我在Linux上)。
此外,在某些情况下,我还会执行以下操作:
git log --pretty='[%h] %an: %s' -1 HEAD
Run Code Online (Sandbox Code Playgroud)
然后使用以下正则表达式解析结果,期望捕获的组中包含简短的SHA,作者姓名和提交摘要:
^\[(\w+)\] ([^:]+): (.*)$
Run Code Online (Sandbox Code Playgroud)
这是一个好方法吗?如果不是,以编程方式获取有关提交信息的首选方式是什么?