我总是问自己一些关于我创建的分支的问题,我还没有决定如何完成:
现在我想如果弄清楚如何获取提交给分支但未使用git cherry master <branchname>
合并到master中的所有提交的哈希值。有了这个我可以通过哈希哈希并弄清楚一切,但如果你有很多提交,这可能是耗时的。请注意,我不想与当前的主人状态进行比较。我认为关键是要知道你创建分支的master的哈希值,但我不确定如何确定它。
答案 0 :(得分:20)
要查找当前结帐与主分支的分歧,
base=`git merge-base master HEAD`
echo $base
找出自那时以来改变了哪些文件,
git diff --name-only $base HEAD
显示累积差异
git diff $base HEAD
如果您想描述一系列提交,您可以使用上面链接的Gabriele Petronella答案中的语法,master..HEAD
是HEAD ^master
的简写,这意味着“所有提交都可以从HEAD获得,但不能包括从主人可以访问的提交“。缺少端点默认为HEAD,因此您可以说git log --oneline master..
答案 1 :(得分:3)
假设您从master
分支,
1。自分支以来哪些文件发生了变化?
git diff master...<branchname> --name-only
2。分支后的完整差异是什么?
git diff master...<branchname>
3。自分支以来提交日志是什么?
git log master..<branchname>
如果您已将其签出,则无需指定<branchname>
(例如git diff master...
)。
注意: git diff
需要三点...
,而git log
需要双点..
来获取您要求的行为。
有关点语法的说明,请参阅:
答案 2 :(得分:2)
对于已更改的文件列表和实际差异,如果您知道要进行比较的2个提交,则更有意义。
如果你想看到START_SHA1
和END_SHA1
之间的差异,你可以这样做:
git diff START_SHA1 END_SHA1
如果您只想要文件列表,可以这样做:
git diff --name-only START_SHA1 END_SHA1
如果您还想了解文件中的更改类型(例如A
,M
,D
,C
,R
,{ {1}}),你可以这样做:
U