当我对源代码进行一些处理后,我做了我通常做的事情提交,然后推送到远程存储库。但后来我注意到我忘记在源代码中组织我的导入。所以我执行修改命令来替换之前的提交:
> git commit --amend
不幸的是,提交无法被推回存储库。被拒绝是这样的:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
我应该怎么办? (我可以访问远程存储库。)
我实际上曾经推过--force
and .git
存储库并被 Linus 骂BIG TIME。一般来说,这会给其他人带来很多问题。一个简单的答案是“不要这样做”。
我看到其他人给出了这样做的秘诀,所以我不会在这里重复。但这里有一个从这种情况中恢复的提示after您已使用 --force (或 +master)推出了修改后的提交。
- Use
git reflog
找到您修改的旧提交(将其称为old
,我们将调用您通过修改创建的新提交new
).
- 创建之间的合并
old
and new
,记录树new
, like git checkout new && git merge -s ours old
.
- 将其合并到您的 master 中
git merge master
- 用结果更新你的主人
git push . HEAD:master
- 把结果推出来。
然后,那些不幸将他们的工作建立在您通过修改和强制推送而删除的提交上的人将看到最终的合并,并将看到您喜欢的结果new
over old
。他们以后的合并不会出现之间的冲突old
and new
这是你们修正的结果,所以他们不必受苦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)