我的仓库现在一团糟..。
我有一个混乱的合并和承诺..。我想回到一个特定的提交,因为它有干净的文件。现在,我在本地有几个filename.orig,而且由于我正在经历的冲突,它出现在最近的合并中。我希望将我的本地文件还原为干净提交(删除所有的垃圾),并删除所有坏的提交/合并,并使干净提交主。这个是可能的吗?
这就是我提交历史的样子:
Merge (sha-1) ->
Clean Commit (sha-2) ->
bad commit (sha-3) ->
bad merge (sha-4) ->
bad merge with .orig (sha-5)发布于 2014-06-28 00:45:57
正如我在评论中已经指出的,您的问题基本上是如何将Git存储库还原为以前的提交?的重复,其中最高投票的答案提供了两个与您相关的解决方案。
解决方案1:硬复位
你说过你已经按下遥控器了。没关系,如果您没有与其他人共享您的分支,那么您可以简单地对要恢复的提交进行硬重置,然后强制回推到您的遥控器:
git reset --hard sha-2
git push origin HEAD -f警告:当您与其他人共享分支时,不要这样做,或者至少如果您在远程分支上丢弃这样的提交,那么至少对他们不太好。这些其他人可能有他们自己的工作,基于旧的提交,您正在丢弃,所以它创造了更多的工作,让这些用户重新同步他们自己的提交与新的重置分支。
如果由于上述原因不能使用此解决方案,则可以使用以下替代解决方案,如如何将Git存储库还原为以前的提交?中所述。
解决方案2:还原
此解决方案只需通过创建反向修补程序的新提交来恢复以前的提交。即使其他用户正在共享您的分支,这也是安全的,因为它不会丢弃新的提交,它只是创建新的提交,因此与之同步并不像丢弃提交一样混乱:
git revert --no-edit sha2..sha5这将恢复范围( sha2,sha5)中的提交,其中sha2是独占的起点,这意味着它不包含在revert中。然后你可以把结果推到遥控器上,
git push origin HEAD文档
补充说明
我试图把这个问题作为如何将Git存储库还原为以前的提交?的翻版来结束,但是看起来这个问题没有得到足够的票数,而且可能没有结束,所以我决定我最好回答它,以防它不是。
发布于 2014-06-27 07:02:30
试着使用:
git reset --hard <previous-commit-hash>这会将所有内容重置为以前的提交。你将得到你的previous-commit-hash的新副本。
https://stackoverflow.com/questions/24443502
复制相似问题