Git拉取变更日志

14
在从git服务器拉取代码后,我正在尝试获取所有更改文件的列表。我不需要代码的任何特定部分,只需要一个文件列表(并附带一些指示,表明它是添加、删除还是更改)。
我最初考虑使用git日志,但显然它仅返回自上次提交以来的信息:
``` git log --name-status --max-count=1 --pretty=format:"" ```
因为这仅获取来自拉取的最后一个提交中的更改,所以我正在尝试找到一种获取所有更改的方法(拉取几乎总是由多个提交组成)。
是否有此命令?(顺便说一下,我正在使用PHP与Git交互)
2个回答

28
在拉取代码后,ORIG_HEAD 指的是拉取前的位置,HEAD 指的是现在所在的位置。因此,ORIG_HEAD.. 表示被拉取到当前分支中的变更。而 --max-count=1 表示仅返回最后一次提交的变更,这并不是你想要的,就像你已经发现的那样。
你可能需要使用 git diff --name-status ORIG_HEAD.. 命令,它将为每个被修改的文件输出一个单字符状态代码和文件名,将所有提交的变更聚合在一起。如果你想要按每个变更进行分类,你需要使用类似 git log --oneline --name-status ORIG_HEAD.. 的命令。

1
git diff --name-status ORIG_HEAD.. 像魔法一样好用,感谢无以言表! - Gilles Maes
2
alias gpull='git pull; git diff --name-status ORIG_HEAD..' 正是我想要的,我已将其添加到我的 .bashrc 文件中。 - tponthieux
如果您的远程跟踪分支跟踪不同的分支,则此方法无法按预期工作。例如,如果我的分支topic跟踪origin/master。Pull将使topic基于origin/master进行变基。要查看仅在上游分支引入的增量,可以运行git lg @{1}..@{u}@{1}使用reflogs,与ORIG_HEAD相同。@{u}是您的上游分支(远程跟踪分支)。 - void.pointer

0

另外一个命令是:

git pull --stat 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接