我讀過關於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