2014-06-15 55 views
0

好的,所以我对git很陌生,害怕做任何会永久搞砸的事情。我昨天做了一个提交,然后从远程回购中拉出来,并在一些文件上搞砸了。现在我想回到我承诺完成之后和之前所做的一切,但我想确保我不会在远程分支上搞乱任何东西,也不想失去我承诺的任何东西。我该怎么办?我知道有很多这样的问题,但我想专门问我想做什么。另外,一旦我回到最后一次提交,我是否可以再次从远程分支中取出?本地删除所有内容以提交最后一次提交?

+0

删除所有内容并再次克隆 – Sleepyhead

+0

尝试'git ref-log'。你应该能够看到你的提交。重置您的存储库到该提交。 –

+0

@sleepyhead:如果user3507586删除所有内容,它们的提交将会丢失。 –

回答

0

如果你真的不想在本地搞乱任何东西,只需在新文件夹中复制(复制)整个回购,然后在新文件夹中试用。


我不想失去任何东西,我犯

首先,你在哪一个分支(将引用您的最后commmits)

git branch tmp 

从“HEAD and ORIG_HEAD in Git “:

pull”或“merge”始终将当前分支的原始顶端留在ORIG_HEAD中。

git reset --hard ORIG_HEAD 

如果没有后拉更多的合并,然后ORIG_HEAD不会有正确的信息了,你就一定得在git reflog拉之前提交。

我想确保我不要弄乱的远程分支什么,

git reset是应用到你的本地克隆本地命令:远程回购不知道的。

一旦你重置,你可以git cherry-pick你看到的最后几个提交git log tmp

+0

请问HEAD和ORIG_HEAD有什么不同? – user3507586

+0

@ user3507586:http://stackoverflow.com/a/967611/6309“ORIG_HEAD'是'HEAD'的前一状态,由具有可能危险行为的命令设置,以便于恢复它们。 – VonC

+0

好吧,我做的是'git reset --hard 8b22b3b',它重置为我认为的那个提交?但是当我运行'git status'时,我看到一堆未跟踪的文件,我不确定它们来自哪里。这是正常的吗? – user3507586

相关问题