Git 强制 push 远程分支
2017-12-12 by dongnan
问题描述
git commit
更改并且 push
到远程的分支,发现信息有错误,想要回退到之前的版本,并重新 commit
与 push
但提示以下错误信息。
git push origin test
To git@git.zongming.net:git/cccf.git
! [rejected] test -> test (non-fast-forward)
error: 无法推送一些引用到 'git@git.zongming.net:git/cccf.git'
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见
提示:'git push --help' 中的 'Note about fast-forwards' 小节。
目标
强制 push
到远程分支,需要注意的是:本次示例中 git
仓库只有一个人使用,所以忽略多人协作导致冲突的问题,需要协调可能的冲突问题。
步骤
- 重命名文件夹,也是
git
报错误的原因。
git mv irm crm
- 项目状态
git status
位于分支 test
您的分支落后 'origin/test' 共 1 个提交,并且可以快进。
(使用 "git pull" 来更新您的本地分支)
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
重命名: irm/default.conf -> crm/default.conf
- 再次提交
git commit -m "rename"
[test 5a644ff] rename
1 file changed, 0 insertions(+), 0 deletions(-)
rename crmi/{irm => crm}/default.conf (100%)
- 强制推送到远程分支,注意
-f
选项。
git push -f origin test
# ...省略
To git@git.git.zongming.net:git/cccf.git
+ 1324406...5a644ff test -> test (forced update)
验证
git log
commit 5a644fffe1132926e668e26ce6f504af7f73dc6b
Author: dongnan <dongnan@zongming.net>
Date: Tue Nov 21 17:52:35 2017 +0800
rename
# ...省略
参考
- https://www.zhihu.com/question/19996736/answer/30883413