如何在本地合并分支并使日志图看起来像在 GitHub 中通过 PR 合并时的样子
How to merge a branch locally and make the log graphs to look like when merged via PR in GitHub
这是使用 GitHub
的流程
- 我在
master
我的机器
- 我创建了一个分支
some-work
,我在上面工作,我做了几次提交
- 我把
some-work
分支推送到GitHub,分支创建在GitHub
- 在GitHub中:我做一个PR,合并
some-work
到master
,删除some-work
- 再次在我的机器中:从
master
我 运行 git pull origin master
,我删除了我的本地 some-work
现在,如果我 运行 在我的机器中 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
。我得到这样的东西:
* 83b98e0 - Merge pull request #17 from MyCompany/some-work (11 days ago)
|\
| * 8ee6573 - (origin/some-work) A message (11 days ago)
| * 8ee6573 - (origin/some-work) Another message (11 days ago)
|/
* ...
此流程未使用 GitHub,仅使用我的本地存储库
- 我在
master
我的机器
- 我创建了一个分支
some-work
,我在上面工作,我做了几次提交
- 我结账
master
- 我将
some-work
合并到master
(git merge some-work
)
- [可选]
git branch -d some-work
和 git push origin master
现在,如果我 运行 在我的机器中 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
。我得到这样的东西:
* 8ee6573 - (HEAD, origin/master, origin/HEAD, master) A message (11 days ago)
* 8ee6573 - Another message (11 days ago)
* ...
问题
如果我像在第二个流程中一样工作,是否有一种方法可以获得第一个流程的漂亮图表(您可以清楚地看到这两个提交已成为名为 some-work
的分支的一部分)流动?即不使用远程仓库进行合并。
您所描述的是 fast-forward merge,如果分支实际上没有分歧,则会自动使用它。为了避免快进并使用显式合并,try
git merge --no-ff some-work
这是使用 GitHub
的流程- 我在
master
我的机器 - 我创建了一个分支
some-work
,我在上面工作,我做了几次提交 - 我把
some-work
分支推送到GitHub,分支创建在GitHub - 在GitHub中:我做一个PR,合并
some-work
到master
,删除some-work
- 再次在我的机器中:从
master
我 运行git pull origin master
,我删除了我的本地some-work
现在,如果我 运行 在我的机器中 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
。我得到这样的东西:
* 83b98e0 - Merge pull request #17 from MyCompany/some-work (11 days ago)
|\
| * 8ee6573 - (origin/some-work) A message (11 days ago)
| * 8ee6573 - (origin/some-work) Another message (11 days ago)
|/
* ...
此流程未使用 GitHub,仅使用我的本地存储库
- 我在
master
我的机器 - 我创建了一个分支
some-work
,我在上面工作,我做了几次提交 - 我结账
master
- 我将
some-work
合并到master
(git merge some-work
) - [可选]
git branch -d some-work
和git push origin master
现在,如果我 运行 在我的机器中 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
。我得到这样的东西:
* 8ee6573 - (HEAD, origin/master, origin/HEAD, master) A message (11 days ago)
* 8ee6573 - Another message (11 days ago)
* ...
问题
如果我像在第二个流程中一样工作,是否有一种方法可以获得第一个流程的漂亮图表(您可以清楚地看到这两个提交已成为名为 some-work
的分支的一部分)流动?即不使用远程仓库进行合并。
您所描述的是 fast-forward merge,如果分支实际上没有分歧,则会自动使用它。为了避免快进并使用显式合并,try
git merge --no-ff some-work