更新未在 git 合并中显示的合并提交消息
Update a merge commit message that doesn't show up in git merge
我有以下提交,我需要用分支名称更新中间的提交。
...
...
9a3de7d [#US810469]Add configuration
807fed0 Merge branch 'master' of github.xx.com:org/repo
6153e1e [#US810469] fix typo
我意识到当我 git rebase -i
它没有显示合并提交时,我在这里了解了原因 [Merge commits don't appear in git rebase --interactive
在交互式 shell 中,我看到它说如果您删除一行,您将丢失提交。我想也许我可以在我想要的地方添加一个提交 :) 但这没有用。它一直向我显示要编辑的待办事项。我尝试编辑它们并再次提交,但每次都失败。
如何将中间提交的消息更改为“[#US810469]Merge branch 'master' of github.xx.com:org/repo”?
当您 git rebase -i
时,您正在以线性方式重写历史记录,从而删除您的合并提交。你可以这样做(假设你在 develop 分支上)
git branch temp # create temporary branch where you are now (at 6153e1e I suppose)
git reset --hard 807fed0 # move develop branch to the merge commit
git commit --amend # now edit your message to look the way you want it
git cherry-pick temp # since there is only commit in temp branch, cherry-pick will do
如果您在合并提交后有多个提交,那么您可以:
而不是最后一个 cherry-pick
git checkout temp
git rebase develop
git checkout develop
git rebase temp
git branch -d temp
这可能有一些捷径,但这样我很容易理解这些步骤;希望你也是...
与其在交互式对话框中插入一行,不如在要插入提交之前将选择更改为对提交的编辑。
示例:
pick 123abccc one
pick 1234abcc two
pick 12345abc three
在 123abccc(一)之前插入一个新提交
pick 123abccc one
edit 1234abcc two
pick 12345abc three
在执行 git rebase --continue
之前添加任何新提交。
编辑:
如果您只想更改提交消息,请将 pick 更改为 reword。
如果您在您想要修改的合并修订后只有普通的旧提交(没有合并),您可以考虑手动:
git checkout 807fed0
git commit --amend -m "Here's the fixed comment"
git cherry-pick 807fed0..master # master or whatever branch
# if everything is ok, then move the local pointer of master (or whatever branch) and push as required
git branch -f master
git push whatever-remote -f master
准备就绪!
我有以下提交,我需要用分支名称更新中间的提交。
...
...
9a3de7d [#US810469]Add configuration
807fed0 Merge branch 'master' of github.xx.com:org/repo
6153e1e [#US810469] fix typo
我意识到当我 git rebase -i
它没有显示合并提交时,我在这里了解了原因 [Merge commits don't appear in git rebase --interactive
在交互式 shell 中,我看到它说如果您删除一行,您将丢失提交。我想也许我可以在我想要的地方添加一个提交 :) 但这没有用。它一直向我显示要编辑的待办事项。我尝试编辑它们并再次提交,但每次都失败。
如何将中间提交的消息更改为“[#US810469]Merge branch 'master' of github.xx.com:org/repo”?
当您 git rebase -i
时,您正在以线性方式重写历史记录,从而删除您的合并提交。你可以这样做(假设你在 develop 分支上)
git branch temp # create temporary branch where you are now (at 6153e1e I suppose)
git reset --hard 807fed0 # move develop branch to the merge commit
git commit --amend # now edit your message to look the way you want it
git cherry-pick temp # since there is only commit in temp branch, cherry-pick will do
如果您在合并提交后有多个提交,那么您可以:
而不是最后一个 cherry-pickgit checkout temp
git rebase develop
git checkout develop
git rebase temp
git branch -d temp
这可能有一些捷径,但这样我很容易理解这些步骤;希望你也是...
与其在交互式对话框中插入一行,不如在要插入提交之前将选择更改为对提交的编辑。 示例:
pick 123abccc one
pick 1234abcc two
pick 12345abc three
在 123abccc(一)之前插入一个新提交
pick 123abccc one
edit 1234abcc two
pick 12345abc three
在执行 git rebase --continue
之前添加任何新提交。
编辑: 如果您只想更改提交消息,请将 pick 更改为 reword。
如果您在您想要修改的合并修订后只有普通的旧提交(没有合并),您可以考虑手动:
git checkout 807fed0
git commit --amend -m "Here's the fixed comment"
git cherry-pick 807fed0..master # master or whatever branch
# if everything is ok, then move the local pointer of master (or whatever branch) and push as required
git branch -f master
git push whatever-remote -f master
准备就绪!