在重置之前将git重置为uncommited状态?

时间:2015-12-25 04:45:26

标签: git git-reset

所以我只是在我的master分支上测试了一些东西,但是在我开始这些测试过程之前,我知道我想重置/恢复到master上的最后一次提交。所以我立即创建了一个新的分支(让我们称之为testfeatures)我认为在git reset --hard分支上使用master时不会受到影响。新的testfeatures分支是在与主服务器相同的状态下创建的(因此它仍然具有所有这些测试功能),然后我检查回主服务器。在使用master时,我使用了git reset --hard <#lastcommitidhere>。现在,这将我的主分支重置为我想要的方式,但是发现它也重置了先前创建的'testfeatures'分支(在创建这个分支之后,我没有提交任何东西,然后切换回master并重置)。

所以我的问题是,如何撤消任何分支上的重置以恢复这些测试功能?可能吗?另外,为什么重置大师对我的另一个分支有影响,因为我认为它们是孤立的?

此外,在重置之前,主分支上未提交“测试功能”。

2 个答案:

答案 0 :(得分:3)

git中未经修改的更改不在分支上,git不会跟踪它们。所以你基本上有一些承诺的变化,git确实跟踪了,你做了一些额外的更改。当您创建新分支时,未提交的更改不会重复(即在两个分支上),因为git不会跟踪它们。通过执行重置删除更改后,它们就会丢失。

实现你想要的东西的正确方法是使用git stash临时保存更改,然后执行你需要的检查并使用git来恢复更改。不幸的是,在你的情况下,没有什么可以做的。

作为未来的建议,尽量不要使用git reset --hard。有更好的选择。另一种方法是提交更改,结账到旧的HEAD,做你的事情,如果需要的话,做一个恢复。

答案 1 :(得分:0)

实际上可以从这种情况中恢复过来。查看相关问题的答案非常有趣: Undo git reset --hard with uncommitted files in the staging area