我有一个提交列表(最新的第一个):
abcd4 message
abcd3 wrong commit message2
abcd2 wrong commit message1
abcd1 message
Run Code Online (Sandbox Code Playgroud)
我需要改变提交的信息abcd2和abcd3.我是按照以下方式做的:
rebase -i abcd1
Run Code Online (Sandbox Code Playgroud)
然后,在交互模式取代我pick用reword,更改必要提交信息并保存更改.这里一切都很好.
问题如下:分支被完全推送到Bitbucket,因此Bitbucket上也有错误的提交消息.
我试图推动更改,但得到错误:
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'https://login@bitbucket.org/user/repository.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
我试图拉动变化,但得到了smth.拉完后很奇怪:
git log --pretty=format:'%h %s' --graph
* ccceeefff Merge branch 'develop' of https://bitbucket.org/user/repository into develop
|\
| * abcd3 wrong commit message2
| * abcd2 wrong commit message1
* | new_hash_of_abcd3 new commit message2
* | new_hash_of_abcd2 new commit message1
|/
* abcd1 message
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:在我的情况下更改消息的正确方法是什么?
您应该能够强制推送(假设您已将bitbucket设置为远程"origin"):
git checkout develop
git push -f origin develop
Run Code Online (Sandbox Code Playgroud)
请注意,在执行此操作之前,您可能需要重置本地开发分支(如果它现在指向您的拉/合并提交):
git checkout develop
git reset --hard new_hash_of_abcd3
git push -f origin develop
Run Code Online (Sandbox Code Playgroud)