所以我只是在我的 master
上测试一些东西分支,但知道我想重置/恢复到 master
上的最后一次提交在我开始这些测试功能之前。所以我立即创建一个新分支(我们称之为 testfeatures
),我认为使用 git reset --hard
不会影响它。在master
上时分支。新testfeatures
分支是在与主分支相同的状态下创建的(因此它仍然具有所有这些测试功能),然后我签回主分支。在master上,我使用了git reset --hard <#lastcommitidhere>
。现在,这将我的主分支重置为我想要的方式,但发现它也重置了之前创建的“testfeatures”分支(创建此分支后,在切换回主分支并重置之前我没有提交任何内容)。
所以我的问题是,如何在任何分支上撤消重置以恢复这些测试功能?是否可以?另外,为什么重置 master 会对我的其他分支产生影响,因为我认为它们是孤立的?
此外,在重置之前,“测试功能”也没有在主分支上提交。
最佳答案
git 中未提交的更改不在分支上,并且 git 不会跟踪它们。所以你基本上有一些已提交的更改,git 确实跟踪了这些更改,并且你做了一些额外的更改。当您创建新分支时,未提交的更改不会重复(即在两个分支上),因为 git 不会跟踪它们。当您通过执行重置删除更改时,它们就会丢失。
实现您想要的效果的正确方法是使用 git stash 临时保存更改,然后进行所需的检查,并使用 git apply 将更改恢复。不幸的是,在你的情况下,我们无能为力。
作为 future 的建议,尽量不要使用 git reset --hard。还有更好的选择。另一种方法是提交更改, check out 旧的 HEAD,做你的事情,如果需要,进行恢复。
关于git - 在重置之前将 git 重置撤消至未提交状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460093/