我阅读了有关 git merge --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
Run Code Online (Sandbox Code Playgroud)
我对此感到惊讶,我不明白:主分支上的 git log 显示所有提交(一、二、三),但这些提交位于功能分支上,而不是主分支上。
我知道主分支上的最后一次提交是功能分支上先前提交链的后代。我希望在 master 分支上进行 rebase,并且只看到 master 上的第一个和最后一个提交。您能向我解释一下为什么不同吗?
那么 git merge --no-ff 的兴趣是与 git …