在重置之前撤消 git 重置为未提交状态?
Undoing a git reset to uncommited state before reset?
所以我只是在 master
分支上测试一些东西,但我知道我想 reset/revert 到 master
上的最后一次提交,然后再开始这些测试功能。所以我立即创建了一个新分支(我们称之为 testfeatures
),我认为在 master
分支上使用 git reset --hard
不会影响它。新的 testfeatures
分支是在与 master 相同的状态下创建的(因此它仍然具有所有这些测试功能),然后我检查回 master。在 master 上,我使用了 git reset --hard <#lastcommitidhere>
。现在,这将我的 master 分支重置为我想要的方式,但后来发现它也重置了之前创建的 'testfeatures' 分支(创建此分支后,在切换回 master 并重置之前我没有提交任何内容)。
所以我的问题是,如何撤消任何分支上的重置以恢复那些测试功能?可能吗?另外,为什么重置 master 对我的其他分支有影响,因为我认为它们是孤立的?
此外,"test features" 在重置之前也未在 master 分支上提交。
git 中未提交的更改不在分支上,git 不会跟踪它们。所以你基本上有一些提交的更改,git 确实跟踪了,你做了一些额外的更改。当您创建一个新分支时,未提交的更改不会被复制(即在两个分支上),因为 git 不会跟踪它们。当您通过执行重置删除更改时,它们丢失了。
实现您想要的目标的正确方法是使用 git 存储临时保存更改,然后进行您需要的检查,然后 git 应用以恢复更改.不幸的是,在你的情况下,没有什么可以做的。
作为未来的建议,尽量不要使用 git reset --hard。有更好的选择。另一种方法是提交更改,签出到旧的 HEAD,做你的事,如果需要,做一个恢复。
实际上是有可能从这种情况中恢复过来的。请参阅具有非常有趣答案的相关问题:
Undo git reset --hard with uncommitted files in the staging area
所以我只是在 master
分支上测试一些东西,但我知道我想 reset/revert 到 master
上的最后一次提交,然后再开始这些测试功能。所以我立即创建了一个新分支(我们称之为 testfeatures
),我认为在 master
分支上使用 git reset --hard
不会影响它。新的 testfeatures
分支是在与 master 相同的状态下创建的(因此它仍然具有所有这些测试功能),然后我检查回 master。在 master 上,我使用了 git reset --hard <#lastcommitidhere>
。现在,这将我的 master 分支重置为我想要的方式,但后来发现它也重置了之前创建的 'testfeatures' 分支(创建此分支后,在切换回 master 并重置之前我没有提交任何内容)。
所以我的问题是,如何撤消任何分支上的重置以恢复那些测试功能?可能吗?另外,为什么重置 master 对我的其他分支有影响,因为我认为它们是孤立的?
此外,"test features" 在重置之前也未在 master 分支上提交。
git 中未提交的更改不在分支上,git 不会跟踪它们。所以你基本上有一些提交的更改,git 确实跟踪了,你做了一些额外的更改。当您创建一个新分支时,未提交的更改不会被复制(即在两个分支上),因为 git 不会跟踪它们。当您通过执行重置删除更改时,它们丢失了。
实现您想要的目标的正确方法是使用 git 存储临时保存更改,然后进行您需要的检查,然后 git 应用以恢复更改.不幸的是,在你的情况下,没有什么可以做的。
作为未来的建议,尽量不要使用 git reset --hard。有更好的选择。另一种方法是提交更改,签出到旧的 HEAD,做你的事,如果需要,做一个恢复。
实际上是有可能从这种情况中恢复过来的。请参阅具有非常有趣答案的相关问题: Undo git reset --hard with uncommitted files in the staging area