问题描述
假设我有以下 git 结构:
A - B - C - D - E - F master
\_ G - H - I branch
git checkout branch; git log
无法识别分支与 master 的分歧点。
如果我想检查此分支中的所有更改怎么办?
解决方法
您正确找到了git log master..branch
要同时列出 C
(分叉点本身),请尝试:
git log --boundary master..branch
如果您想要 C
和 I
之间的差异,那就是:
git diff master...branch # three dots
这是一个快捷方式:
git diff $(git merge-base master branch) branch
git log
的额外说明:
要更清楚地了解谁是谁的父母,您可以添加 --graph
:
git log --graph --boundary master..branch
将它与 --oneline
结合可以让您(恕我直言)对您的历史有一个好的和紧凑的概述:
git log --oneline --graph --boundary master..branch
,
很惊讶我无法轻易找到这个问题的答案。这似乎是一个非常普遍的问题。
git log master..branch
... 获取 G,H,I
的提交(有谁知道如何获取 C,G,I
?)
但是 git diff master..branch
得到 diff(F -> I)
。
您需要:
git log -p master..branch`
...得到diff(C -> I)