2013-04-03 189 views
1

我在Git中工作并希望知道将此Repo的所有更改恢复为特定提交的最佳方法。例如,这里是我的日志是什么样子的例子:恢复以前提交状态的所有更改

commit hash#1 

commit hash#2 

commit hash#3 

commit hash#4 

我在我的master分支,想要恢复到这个回购所做的所有更改提交哈希#4。这意味着我想撤消散列#1,散列#2和散列#3中提交的更改。

我不想重写/删除历史记录,因为这是公共回购。而且我确实想要(重新)提交散列#4,一旦它被恢复。

谢谢!

回答

3

请尝试以下

git reset --hard commit_hash_4 
git reset --soft commit_hash_1 

的第一个命令将重置工作目录和头回commit_hash_4。第二个命令会将头移回commit_hash_1。在这一点上Comitting将保持线性的历史,但会给你commit_hash_4的状态

+0

当我推送到远程主分支时会遇到任何问题吗?远程主服务器当前正在提交hash#1 –

+0

@FillipPeyton no。该命令的最终效果是它会将工作目录重置为commit_hash_4,但是将针对commit_hash_1进行提交。就好像你在其他地方检出了commit_hash_4,并在当前目录中复制粘贴。 – JaredPar

+0

@FillipPeyton你应该看看这个git reset的解释。我经常访问这个页面来刷新我对这个命令是如何工作的知识,以及它是如何在引擎盖下进行的http://git-scm.com/2011/07/11/reset.html – JaredPar

0

每(http://git-scm.com/2011/07/11/reset.html)伟大的复位概述:

reset命令以特定的顺序将覆盖这三棵树, 停车时你告诉它。

1)无论移动分公司负责人站至(停止,如果--soft)

2)然后,赚了指数看起来像(停在这里,除非 - 硬)

3)然后,使工作目录看起来像

只是想分享给任何其他用户遇到此问题。

相关问题