【发布时间】:2014-02-28 16:07:19
【问题描述】:
我克隆了一个存储库,进行了一些更改并提交了一些文件,然后使用git pull 获取远程修改。意识到它已经自动合并了一些更改,我想回到我最新的(本地)提交,只是 git fetch 远程并手动合并。
所以,我使用git log 来查找我的最新提交,并使用git reset --hard my_commit_hash。但是现在,我又回到了原点,我的每一个提交都丢失了。我怎样才能回到我的最新版本?
【问题讨论】:
我克隆了一个存储库,进行了一些更改并提交了一些文件,然后使用git pull 获取远程修改。意识到它已经自动合并了一些更改,我想回到我最新的(本地)提交,只是 git fetch 远程并手动合并。
所以,我使用git log 来查找我的最新提交,并使用git reset --hard my_commit_hash。但是现在,我又回到了原点,我的每一个提交都丢失了。我怎样才能回到我的最新版本?
【问题讨论】:
如果您确实进行了提交,并且以某种方式进行了实际上不是您最新的提交,那么您可以使用 reflog 回到原来的位置。但这听起来更像是您添加了带有git add 的文件,而实际上并没有git commit 它们。在这种情况下,您的问题要困难得多。添加的文件将在您的对象数据库中创建对象,您可以使用git fsck 找到这些对象,但是恢复它们需要比您原本需要的更多的工作。那你是什么情况呢?
编辑:
一旦你在 reflog 中看到你想要的提交,比如HEAD@{3},你所要做的就是git reset --hard HEAD@{3}
【讨论】: