git - 在重置之前将 git 重置撤消至未提交状态?

标签 git git-reset

所以我只是在我的 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/

相关文章:

git - 如何恢复/取消 git reset --soft HEAD~20

git - 我需要 pop 并删除我的 master 分支中的 "middle"提交。我该怎么做?

git rebase 吃掉了我的提交!为我翻译 'git reflog' 输出?

git - 如何更改 GitHub 上的文件模式?

windows - 如何禁用 Git 的 HTML 帮助(在 Windows 上)?

git - 相当于 Git 中的 Clearcase 基线和 Clearcase 事件?

git - 'git reset' + 'git push' 会将我的分离提交发送到远程存储库吗?

git - 有没有一种方法可以干净轻松地撤消 git merge?

git - 修改我从中 fork 的 Github 存储库

Git rebase,跳过 merge 提交