更新未在git merge中显示的合并提交消息

问题描述 投票:0回答:3

我有以下提交,我需要使用分支名称更新中间提交。

...
...
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]合并分支'master'的github.xx.com:org/repo”?

git rebase
3个回答
2
投票

当你git rebase -i,你以线性方式重写历史,从而删除你的合并提交。你可以这样做(假设你在开发分支)

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

如果你在合并提交后有多次提交,那么你可以:而不是最后一次提交:

git checkout temp
git rebase develop
git checkout develop
git rebase temp
git branch -d temp

可能有一些快捷方式,但这样我很容易理解这些步骤;希望你也是......


0
投票

不要在交互式对话框中插入一行,而是在要插入提交之前将选择更改为提交上的编辑。例:

pick 123abccc one
pick 1234abcc two
pick 12345abc three

在123abccc(一)之前插入新提交

pick 123abccc one
edit 1234abcc two
pick 12345abc three

在做git rebase --continue之前添加任何新的提交。

编辑:如果您只想更改提交消息,请将选择更改为reword。


0
投票

如果你想要修改的合并修订版之后的内容只是普通的旧提交(没有合并),你可以考虑手工完成:

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

准备!

© www.soinside.com 2019 - 2024. All rights reserved.