我读过关于git merge --no-ff的文档。git合并后的git log --no-ff显示合并的其他分支提交的所有提交
我试过,结果是:
Mini-de-MiniMac:ZtestGit minimac$ git branch
feature
* master
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline
82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
50d9f108d70798a13cc25fb7321d57ad5ba61854 three
d7163bc5320162689544293be1ac2228c6e3dc34 two
a7ba4c797d49d940a7d64a8ddaba787eb013622a one
cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline --graph
* 82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
|\
| * 50d9f108d70798a13cc25fb7321d57ad5ba61854 three
| * d7163bc5320162689544293be1ac2228c6e3dc34 two
| * a7ba4c797d49d940a7d64a8ddaba787eb013622a one
|/
* cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
我很惊讶有关,我不明白:在主分支展会git的日志中的所有的提交(一,二,三),但这些提交在功能分支上,而不是主人。
我知道主分支上的最后一个提交是功能分支上前一个提交链的后代。我期望在master分支上有一个rebase,并且只能看到master上的第一个和最后一个commit。你能向我解释为什么它不同吗?
因此,做git合并--no-ff的兴趣是使用git log --graph而不是git log只有?我添加了一个更奇怪的现象:当我删除功能分支时,git说分支被删除了,但是git log和git log --graph给出和以前完全一样的结果:提交和功能分支仍然出现。
你有解释吗?
Mini-de-MiniMac:ZtestGit minimac$ git branch
feature
* master
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline
82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
50d9f108d70798a13cc25fb7321d57ad5ba61854 three
d7163bc5320162689544293be1ac2228c6e3dc34 two
a7ba4c797d49d940a7d64a8ddaba787eb013622a one
cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline --graph
* 82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
|\
| * 50d9f108d70798a13cc25fb7321d57ad5ba61854 three
| * d7163bc5320162689544293be1ac2228c6e3dc34 two
| * a7ba4c797d49d940a7d64a8ddaba787eb013622a one
|/
* cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
Mini-de-MiniMac:ZtestGit minimac$ git branch
feature
* master
Mini-de-MiniMac:ZtestGit minimac$ git branch -d feature
Deleted branch feature (was 50d9f10).
Mini-de-MiniMac:ZtestGit minimac$ git branch
* master
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline
82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
50d9f108d70798a13cc25fb7321d57ad5ba61854 three
d7163bc5320162689544293be1ac2228c6e3dc34 two
a7ba4c797d49d940a7d64a8ddaba787eb013622a one
cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
Mini-de-MiniMac:ZtestGit minimac$ git log --pretty=oneline --graph
* 82307080064b764c28622351a4c28abb4f9302b8 Merge branch 'feature' with --no-ff option
|\
| * 50d9f108d70798a13cc25fb7321d57ad5ba61854 three
| * d7163bc5320162689544293be1ac2228c6e3dc34 two
| * a7ba4c797d49d940a7d64a8ddaba787eb013622a one
|/
* cc3e4abf5dfad7779de3837a6c4e6e29e3ca87b2 start
谢谢。
'git log --graph --decorate --all'可能会显示更清晰的图片。 –
'git merge --no-ff'强制创建合并提交,因此您将始终在其他分支上看到提交,因为它们是已创建提交的祖先。其他分支是否存在并不重要 - 提交在那里,因为它们是可访问的。 –
如果你只想要第一个父亲的历史,比如说'--first-parent' – jthill