当我注意到更改太大时,我在master分支上工作,因此我决定将它们放在另一个分支上。因此,我git checkout -b new_branch_name
在Git Bash上进行了操作,然后(没有在两个分支中的任何一个上提交),我放弃了master分支上的所有更改(从Github Desktop)。令我惊讶的是,这也放弃了新分支的更改,我以为它们没有链接。
如何撤消丢弃物?
编辑:
对不起,我的术语不好,我是git新手。
tl; dr:有疑问时:
git stash
。
我不确定您所说的丢弃是什么,因为这不在git术语之内。另外,我不确定您所说的是什么变化。
因此,我假设通过更改意味着您已经完成但尚未完成的事情,即您的工作区或索引很脏。
你在树枝上A
:
unstaged changes
↑
A
↑
…
并且您创建了一个新分支 B
unstaged changes
↑
A,B
↑
…
然后,您执行了您所谓的Discard,但实际上是reset --hard
当前分支的。
A,B
↑
…
如果是这样,那么很抱歉告诉您您的更改丢失了。
永远消失了。
而且,只要您仍然脑海中新鲜,就应该赶快重写它们。
您需要了解的是,当您操作git时,正在处理以下级别的更改:
根据经验,如果不在提交中(即1.或2.),则它可以消失。否则,有解决问题的解决方案。
但是您有时想要保护脏索引而不进行新的提交。这就是它的stash
用途。因此,每次您要使用分支机构时,都可以git stash
保存工作,工作空间和索引是干净的。完成后,您可以git stash pop
并且会再次找到您的更改。
用您所说的话,对最后一部分有一个误解:本地更改和对索引的更改不是相对于分支的,而是相对于文件系统的。如果您更改分支,它们会留在那里并被应用到新分支(如果可能,否则会出现错误)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句