通常,我只是运行
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个分支,一个用原始提交,另一个用修改提交。
答案 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
然后再次将其作为完整的提交