当我对我的源代码做了一些工作后,我做了我通常的事情提交,然后我推送到一个远程存储库。但后来我注意到我忘记在源代码中组织我的导入。所以我执行了修改命令来替换之前的提交:
> 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和.git存储库并被 Linus BIG TIME 责骂。一般来说,这会给其他人带来很多问题。一个简单的答案是“不要这样做”。
--force
.git
无论如何,我看到其他人给出了这样做的秘诀,所以我不会在这里重复。但是,在您使用–force(或+master)推出修改后的提交 后 ,这里有一个提示可以从这种情况中恢复过来。
git reflog
old
new
git checkout new && git merge -s ours old
git merge master
git push . HEAD:master
然后那些不幸的人将他们的工作建立在你通过修改和强制推送而抹杀的提交上,他们会看到结果合并会看到你更new喜欢old. 他们后来的合并不会看到你的修改导致的old和之间的冲突new,所以他们不必受苦。