2017-03-15 88 views
-1

如何撤消git pull origin命令?我使用sshpemfile连接到亚马逊服务器ec2-instance。我导航到server上的project目录。和ran的“git pull origin”。我想在这个aws instance上撤消这个操作。我怎样才能做到这一点。这是一个ruby on rails应用程序如何撤消服务器上git的“git pull origin”命令?

回答

-1

您想取消合并。运行此命令:

git reset --hard 

您还可以通过运行相同的命令,并添加decired状态的SHA1复位到一个特定的状态。运行:

git reflog 

欲知更多关于它的信息!

+0

我想“回滚”只有最后一个“git pull origin”命令。上述解决方案可以做最后一次拉回吗? – John

+1

首先运行'git reflog'并从你希望重置的提交中取出SHA1,然后运行'git reset --hard [提交的SHA1]' – JonasJR

+0

@JonasJR正如所写的这个答案不正确。只要做这样的重置就会重置为“HEAD”,这就是OP已经存在的地方。你在reflog的正确轨道上,但最初的重置命令不会撤销OP询问的内容。 –

0

仅提及git reset --hard的答案不正确。完成pull后,您的HEAD已进入您更新的新点。 git reset暗示的参考号是HEAD,这样命令就会将你重置为......你已经在的地方。

当提到reflog时,JonasJR更接近。 reflog是您采取的每项行动的本地历史记录。如果你只是做了拉,它可能看起来像这样。

$ git reflog 
6dd1a7b93 [email protected]{0}: pull: Fast-forward 
e45d35313 [email protected]{1}: checkout: moving from feature to master 
... more ... 

在这里,我有我所采取的最后两个动作。一拉,就在此之前,我用结帐来改变分支。

要回拉之前的状态,我可以使用它的参考([email protected]{1})。

git reset --hard '[email protected]{1}' 

现在,如果我查看reflog,它会显示我重置为先前的状态。重置本身已成为历史记录的一部分,所以如果需要,您也可以使用reflog撤消错误的撤消。

$ git reflog 
e45d35313 [email protected]{0}: reset: moving to [email protected]{1} 
6dd1a7b93 [email protected]{1}: pull: Fast-forward 
e45d35313 [email protected]{2}: checkout: moving from feature to master 

正如你所看到的,我们现在已经从6dd1a7b93走了,又回到了以前的状态,e45d35313(这既是[email protected]{2}[email protected]{0}在这一点)。

请注意,reflog是本地副本的回购。如果您在其他地方签出副本,则它拥有自己完全独立的reflog。这不是与您的项目上的其他人共享的,等等。

通常的免责声明reset --hard适用于此处。如果您目前有未提交的更改,则此命令会将其清除。在这种情况下,使用git stash将它们放在一边,而您重置。