由于git使用不正确而恢复丢失的更改

时间:2011-01-20 17:53:47

标签: git

我正面临一种情况,我失去了一些改变 在git中我的分支工作时的文件。不幸的是我意识到了 在做了一系列的git之后几个小时我就失去了一系列的改变 我怀疑会导致数据丢失的操作。这里是 我怀疑会导致数据丢失的步骤。

我正在分支机构:功能/记录

在这个分支中我修改了文件:

  • log.py
  • 测试/ test_log.py

这些文件也可以在其他分支上使用。我没有上演过 也没有提交这些文件。

3.我现在尝试拉出遥控器中完成的更改 存储库运行:

%git pull origin

这导致合并,并且在几个文件中存在合并冲突 (不一定是我修改的那些)并且合并不成功。一世 决定我现在不想解决合并冲突并中止 通过运行合并:

%git reset --hard HEAD

我认为此步骤导致文件内容'log.py''tests / test_log.py'将从之前的提交中拉出来 覆盖我未提交和未暂停的更改。

现在我的问题是:

  • 我认为数据丢失的原因是正确的 重置完成以中止合并?
  • 如果重置是造成数据丢失的原因,那么就有办法获得 支持我未提交/未解决的更改?

2 个答案:

答案 0 :(得分:4)

是的,git reset --hard将不加区别地销毁所有本地更改并恢复到上次提交。但这应该是你在git pull之前所做的提交(前提是你此时没有任何未经分级的更改);所以事情可能不会太糟糕。

git pull可能有点毛茸茸。关于为什么您应该考虑将git fetchgit merge视为单独的操作,有一个good article

答案 1 :(得分:0)

如果在添加非暂存文件之前有人像我git reset --hard那样犯了同样的错误,那么仍然有机会重新获得这些更改。虽然这些文件在repo中不再可用,但是一些新的IDE保留了它们自己的历史记录。就像在我的情况下,我能够从位于VCS下的 Android Studio 本地历史记录功能中检索我的未分级更改。 DirectionsRevert Changes