如何在git中创建分支后获取已更改文件的列表

时间:2014-09-17 23:58:55

标签: git version-control

假设我创建了一个分支dev,然后进行了5次提交,并且更改了总文件数为5。

是否有任何命令可以运行以仅查看自分支创建以来更改的文件列表?

1 个答案:

答案 0 :(得分:4)

分支机构不会保留“创建”信息,因此您无法通过git完全自动地执行此操作。但是,如果你知道有5个“有趣的”提交:

         A <- B <- C <- D <- E   <- dev
        /
... <- * <- o <- ...  <-- master

并且您希望将提交E(分支dev的提示)与提交*进行比较,提交前提交A

$ git diff dev~5 dev

将向您展示两者的完全差异。 ~5符号表示“倒计时五个父母”:从E开始,向后退一个到D,向后退一个到C等等;如果你这样做了五次,那就落在标有*的提交上。

差异显示了这两个提交之间的区别。默认情况下,它会向您显示所有内容,但如果您想要查看更改(或添加或删除等)文件的名称,则可以添加--name-only


通常,更好的方法是不关心分支dev创建,而只关注dev和其他某个分支(例如{{1}) })加入。例如,在这种情况下,您可能想要通过询问:“master*首次加入历史记录,从{{1}的提示开始,找到提交master }和dev并向后工作?“

要找到这个,你可以向git询问两个分支的“合并基础”:

dev

这将生成合并库的原始commit-ID(图中的commit master)。然后,您可以将其提供给$ git merge-base dev master *git diff--name-only或您喜欢的任何内容:

--name-status

这很常见,--stat重新使用特殊$ git diff --name-status $(git merge-base dev master) dev 语法(详见gitrevisions):

git diff

这里的三点语法告诉master...dev找到合并库,并在它和右边标识的提交之间产生差异:分支$ git diff --name-status master...dev 的提示。