我阅读了有关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
我对此感到惊讶并且我不明白:主分支上的git登录显示所有提交(一,二,三)但这些提交在功能分支上,而不是主。
我理解master分支上的最后一次提交是功能分支上先前提交链的后代。我希望在master分支上有一个rebase,并且只能查看master上的第一个和最后一个提交。你能解释一下为什么它有所不同吗?
所以做git merge --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
感谢。
答案 0 :(得分:3)
Git日志显示了您指定的ref的祖先的所有提交。其他分支的存在与否都没有效果。它遍历提交图。
这些提交位于功能分支上,而不是主要
git中的提交不是" on"任何分支。分支是一个可移动的指针,用于命名提交(以及扩展名,该提交的所有祖先)。
通过将您的功能分支合并到主服务器 - 通过快进或合并 - 您可以将master的分支指针移动到某个新分支指针。此提交具有作为祖先在master上的先前提交。
那么做git merge --no-ff的兴趣是使用git log --graph而不是git log吗?
专门创建合并提交的值是记录合并的内容,何时以及由谁来记录。 git存储库在提交图中存储仅的历史记录,分支是短暂的。
答案 1 :(得分:1)
使用可以使用
git log --first-parent
仅查看您当前所在分支中的提交。(我理解,提交不位于任何分支上,如先前的回答所述)