完整的文档在这里:https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html
假设您有一个看起来像这样的存储库:
base - A - B - C - D (master)
\
\- X - Y - Z (myBranch)
验证仓库状态:
> git checkout master
Already on 'master'
> git status ; git log --oneline
On branch master
nothing to commit, working directory clean
d9addce D
110a9ab C
5f3f8db B
0f26e69 A
e764ffa base
并且针对我的分支:
> git checkout myBranch
> git status ; git log --oneline
On branch myBranch
nothing to commit, working directory clean
3bc0d40 Z
917ac8d Y
3e65f72 X
5f3f8db B
0f26e69 A
e764ffa base
假设您在我的分支(myBranch)上,并且您只想查看自从从主分支(master)创建以来所做的更改。请使用双点版本:
> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X
三个点版本会显示从主分支尖端到我的分支尖端的所有更改。但是请注意,公共提交B不包括在内:
> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X
请注意:git log
和git diff
的行为是不同的!二者的行为并非完全相反,但几乎相反:
> git diff master..myBranch
diff --git a/rev.txt b/rev.txt
index 1784810..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-D
+Z
> git diff master...myBranch
diff --git a/rev.txt b/rev.txt
index 223b783..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-B
+Z
因此,两个点的版本显示了从主分支的最新提交(即D)到我的分支的最新提交(Z)的差异。而三个点的版本则显示了从我的分支的基础提交(即B)到最新提交(Z)的差异。