我已经从master创建了一个分支xyz.我做了大约1000次提交,可能修改了xyz分支中的20个文件.现在我想列出我在xyz分支中修改过的所有文件.
以下命令列出在两个分支中修改的文件.
git diff --name-only master...xyz
Run Code Online (Sandbox Code Playgroud)
正如@torek 所指出的,该git diff命令完全忽略点符号。
因此,以下命令应该会产生预期的结果:
git log --oneline --name-only develop..xyz | sort | uniq
Run Code Online (Sandbox Code Playgroud)
打印出类似这样的内容,修改后的文件在末尾:
0871be6 commit 1
9caad09 commit 2
bb714f0 commit 3
...
path/to/file1
path/to/file2
path/to/file3
path/to/file4
Run Code Online (Sandbox Code Playgroud)
注意,只有两个点。这意味着,要考虑 中xyz但不在 中的所有修订develop。
使用三个点使用仅在两个分支之一中但不在两个分支中的所有修订。
参考: https: //git-scm.com/book/tr/v2/Git-Tools-Revision-Selection#Commit-Ranges
这里的根本问题是git diff比较两个特定的提交.1 无论你给出什么参数,它仍然会选择两个特定的提交,并比较这两个.2
这意味着,为了git diff向您展示您在某个分支中所做的事情,您必须在该分支中选择两个提交:一个称为"起点",另一个称为"终点".如果您选择这样做,通常有助于绘制提交图.您可以手动执行此操作,也可以使用git log --oneline --graph帮助.(git log --oneline --graph --decorate --boundary master...xyz另一种方法是尝试自己绘制图形,这可以让您更紧凑地表示gitk图形,或者使用或绘制其他一些图形查看器图表.
如果提示提交和提示提交之间存在单个合并基础提交,则:masterxyz
git diff --name-only master...xyz
Run Code Online (Sandbox Code Playgroud)
将比较(并列出修改的文件的名称)特定的合并基础,与分支XYZ的最尖端提交.也就是说,如果图形看起来像:
o--o--o--o--...--o--Z <-- master
/
...--o--*
\
F--G-...--X <-- xyz
Run Code Online (Sandbox Code Playgroud)
然后*是合并基础提交,Z是提示提交master,3 X是提示提交xyz,git diff master...xyz并将比较提交*与提交X.(相比之下, - git diff master..xyz注意两个点而不是三个点,这里将比较提交Z与提交X.)
这就是说,因为git diff --name-only master...xyz没有显示你想要的东西,你可能需要git log --name-only master..xyz(也可能有--oneline,我看到gucce添加这是一个评论,以及),向您显示会发生什么每个提交了在xyz那是不是也master.也就是说,给定上面的图表,这将对提交*进行差异提交F,然后F反对G,依此类推,直至进行比较X.请注意,这是使用git log内置的能力来区分每个提交对其父级.4
1它还可以将一个提交与索引进行比较,或者将一个提交与工作树或工作树的索引进行比较.在另一种模式下,它可用于比较两个特定文件,其中一个或两个文件根本不需要存储在存储库中,但这与您希望使用它的方式更加不同.
2这也有点夸大其词:通过提供git diff多对提交,你可以让它产生它所谓的组合差异.这通常用于合并提交,以显示合并内容与所有父提交不同的点,即通过选择除"一个分支中的内容"之外的其他内容来解决合并冲突的位置.但是,与你想要达到的目标相比,这也是错误的方向.
3我曾经把它作为T主人的一点,然后意识到这T是在字母之间F和之间X. X是的xyz,所以我改T到Z这里,以便它来了X.一般的想法是我们对大多数提交都不感兴趣master,除了名称master选择的最尖端的提交.
4如果F-through- Xchain 中的任何提交是合并提交,git log除非你添加一些额外的选项,否则根本不会去除它.也就是说git log,除非你要求组合差异(-c或--cc)或拆分合并(-m),否则在分辨它们时跳过合并.所有这三个选项都有缺点,所以最好的办法是首先处理不合并的情况.
| 归档时间: |
|
| 查看次数: |
4067 次 |
| 最近记录: |