我正在使用git log
命令分析对repo的提交。然而,回购是从预先存在的回购中派生出来的,我只想看看回购派生后发生的提交。
我该如何做到这一点?我知道我可以根据时间进行过滤(使用--since=<date>
和--after=<date>
,但我想以自动化的方式进行过滤,而无需手动查看分叉的日期。
git merge-base original_repo/some_branch fork_repo/some_other_branch
将告诉您这两个分支有共同点的最新提交,然后您可以使用git log
查看该提交之后的提交。
我认为使用..
来指定修订范围可以做到这一点。
如果你的git历史看起来像这样,
master
是您分叉的分支fork-branch
是你的叉子的名字
* 7b4c506 (HEAD -> fork-branch) more work
* e1faf6b work
* 5569418 (master) Upstream head
* e09c8ad some upsream commit
然后运行git log master..HEAD
将显示自创建fork以来进行的所有提交
如果您想在同一张图上查看origin/master
和fork/master
的组合历史,可以使用三点表示法:
git log --graph origin/master...fork/master
假设您的历史记录如下:
* 20f7041 (origin/master) more work on origin
* c278977 work on origin
| * 68ca178 (fork/master) more work on fork
| * 2e47141 work on fork
|/
* 0399c79 fork point
* 051f0c6 second commit
* 872afdf first commit
然后你会看到:
$ git log --oneline --graph origin/master...fork/master
* 20f7041 (origin/master) more work on origin
* c278977 work on origin
* 68ca178 (fork/master) more work on fork
* 2e47141 work on fork
您还可以添加--boundary
选项,使git log
显示共同祖先:
$ git log --boundary --oneline --graph origin/master...fork/master
* 20f7041 (origin/master) more work on origin
* c278977 work on origin
| * 68ca178 (fork/master) more work on fork
| * 2e47141 work on fork
|/
o 0399c79 fork point