我按照Change old commit message on Git中的步骤操作,确认在git log
中更新了提交消息。但是,当我单击Github中的“提交历史记录”选项卡时,我仍然会看到旧消息和旧的SHA-1。
所以,我盲目地尝试了git push origin master
,但是失败了:
To git@github.com:foobar.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:foobar.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
错误告诉我“在再次推送之前合并远程更改”,但这似乎是错误的做法:将新内容合并到修改后的提交中(来自较旧的基础)。我很困惑。
我如何提交修改后的信息?
答案 0 :(得分:3)
如果您要重写历史记录,则需要致电:
git push --force
答案 1 :(得分:1)
正如@xsace所说,你在这里重写历史。
git中的提交与以下几点相关联:
如果您更改了其中任何一项,并且您在此处(您更改了提交消息),则您的历史记录和github(或任何其他远程用户)会发生分歧:
[parent]----[master@github]
\
\------[your local master]
在这里,您希望将yourlocalmaster
推送到github,但这不是快进,即github上的当前主头不是您提交的直接父级。因此,你需要强行推动。
这也可以使用git push github +master
完成。