git的新手,如果这是一个愚蠢的问题,请道歉。
我在我正在处理的iOS项目中使用git,而且只有我推送到私有存储库。
我做了一些推动,意识到我想完全忘记/删除我做的提交,所以我git reset --hard
进行了提交,进行了一些进一步的更改,并进行了新的提交。
我把它推到了我的存储库,当然我得到了一个警告,我已经落后了。我读了一下,感觉git push --force
会覆盖远程存储库。我知道,如果它是一个公共存储库或者一个团队看着这样做会很糟糕,但事实并非如此,只是覆盖远程存储库似乎很合适。
这样做好吗?我无法看到任何问题。
答案 0 :(得分:3)
你的结论是正确的。你可以这样做,因为只有你有一个存储库实例。
但是,如果您正在使用协作者,或者您有多个存储库克隆(例如在工作和家中),当您尝试从过时的副本推送或拉出时,可能会产生额外的复杂性。
一般情况下,如果您公开分享了提交,并且想删除提交,最好使用git revert
。
$ git revert <commit>...
这将恢复相关补丁引入的更改,并记录一些记录它们的新提交。优点是它保留了历史记录,您的同事不会遇到任何拉动或推动的问题。
但是,如果您需要完全删除提交,请说是因为您发布了一些超级秘密配方,此时唯一的方法是reset
和push --force
。