在备份服务器上,我有一个回购。我通过git clone
到我的家用电脑(开发工作电脑)。在clone
之后,我git fetch
然后git checkout dev
。在dev
分支中,我想更改最后一次提交注释,例如git commit --amend -m 'Fixed commit'
,并将其推回git push origin dev
,但会发生错误:
To /*****.git
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to '/*********.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.
问题出在哪里?如何从远程仓库获取dev
分支并将数据推送到它。
答案 0 :(得分:3)
这是因为git commit --amend
在dev
分支上重写了本地提交历史记录。
如果你100%确定你的提交不会踩到任何人的工作,你可以用git push origin dev -f
强制推送分支。
另一个选择是git pull
,修复任何合并冲突,使用新合并的代码创建另一个提交,并推送它。这通常被认为是一种安全的做法,但可能会污染您的提交历史记录。
答案 1 :(得分:0)
看起来远程分支超前于您自己,这意味着它至少有一个您没有的提交。尝试git pull然后合并任何更改并再次推送。