Git在修改提交后阻止推送

时间:2013-09-03 09:42:23

标签: git git-push git-commit amend

通常,我只是运行

git add file
git commit
git push

但是如果我在>之前修改提交(使用git commit --amend),则下一次推送会失败

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.

如何让git在不合并分支的情况下推送更改?我只有一个分支(master),我是唯一一个使用这个仓库的人,所以为什么这么说呢?

git branch -a:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

编辑:使用gitk HEAD @{u},我看到我有2个分支,一个用原始提交,另一个用修改提交。

3 个答案:

答案 0 :(得分:54)

如果您正在修改已经推送的提交,则应该是这种情况。通常,您应该永远不要这样做,因为您随后修改已发布的历史记录。但是,在您的情况下,您应该可以使用push -f,它将使用修订后的修订覆盖远程提交。

答案 1 :(得分:13)

是的,你不应该这样做(推送提交,然后更改它并尝试再次推送它)。

相反,您可以在不更改文件的情况下将Git回滚到先前的提交,然后创建新的提交:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be an amendmend"
git push origin master

这将创建一个新的提交,其中包含您即将修改的更改。

答案 2 :(得分:8)

你修改了提取提交,如

git pull origin master
git commit -a --amend -m "..."
git push

你可以通过恢复修改后的提交来解决问题:

git reset --mixed origin/master

然后再次将其作为完整的提交