我使用私有github repo作为我唯一开发者的项目。
昨天,在将我的最新更改推送到github之后,我决定试着改变我的一些本地提交,以便稍微清理一下。我跟着Github's rebase tutorial并没有注意到顶部的警告:
警告:对已经推送到远程存储库的提交进行重新绑定被认为是不好的做法。这样做可能会调用 git gods的愤怒。
在压制了一些提交之后,我试了一下,然后得到了这个:
$ git push origin master
To git@github.com:me/my-repo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:me/my-repo.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.
好吧,它希望我合并远程更改,但我没有做任何事情,所以我会忽略它。查看帮助部分,看起来我可以选择强制推送:
git push --force
考虑到没有其他人触及远程回购,我的上次推送和变基之间没有任何变化,这样做可以,还是会有后果?
答案 0 :(得分:3)
你需要强制推动。你正在做的事情与'git reset'与之前的一些提交相反,然后用更少的'清洁'提交重做你的工作。只要您是唯一的用户,就去吧。请记住,您所拥有的远程数据库的任何本地副本都会在某个目录中与您的遥控器发生冲突。您需要在再次工作之前克隆。另一个警告是,如果你意识到其中一个提交中的代码是你用力推动而抨击的,那么你就不会把它取回来。
答案 1 :(得分:2)
因为你是唯一的贡献者,是的,没关系。
如果其他人在此期间撤回了回购协议,则会出现问题,但事实并非如此,因此强行推动是安全的。
那就是说,如果你在我们分享的回购中做过类似的事情,我会找到你的。