假设我创建了一个分支dev
,然后进行了5次提交,并且更改了总文件数为5。
是否有任何命令可以运行以仅查看自分支创建以来更改的文件列表?
答案 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
的提示。