如何撤消git上的放弃更改?
当我注意到更改太大时,我正在处理主分支,我决定在另一个分支上进行更改。因此,我在git Bash上执行了如何撤消git上的放弃更改?,git,github,Git,Github,当我注意到更改太大时,我正在处理主分支,我决定在另一个分支上进行更改。因此,我在git Bash上执行了git checkout-b new_branch_name,然后(在两个分支上都没有提交)放弃了主分支上的所有更改(从Github桌面)。令我惊讶的是,这也放弃了新分支的更改,我认为它们没有关联 如何撤消放弃操作? 编辑: 变化:我没有承诺的事情 Discard:Github Desktop允许我放弃(删除)未提交的更改 对不起,我的术语不好,我是git新手 tl;dr:有疑问时:git
git checkout-b new_branch_name
,然后(在两个分支上都没有提交)放弃了主分支上的所有更改(从Github桌面)。令我惊讶的是,这也放弃了新分支的更改,我认为它们没有关联
如何撤消放弃操作?
编辑:
- 变化:我没有承诺的事情
- Discard:Github Desktop允许我放弃(删除)未提交的更改
git stash
我不确定您称之为discard,因为这不在git术语范围内。还有,我不知道你所说的改变是什么意思
所以我想,所谓的改变,是指你已经做了但没有完成的事情,也就是说,你的工作区或索引变脏了
您在分支机构A
:
unstaged changes
↑
A
↑
…
您创建了一个新分支B
unstaged changes
↑
A,B
↑
…
然后你做了一个你称之为丢弃的操作,但实际上是一个当前分支的重置--hard
A,B
↑
…
如果是这样,那么我真的很抱歉地告诉你,你的更改丢失了
永远消失。
你应该尽快重写它们,只要它还在你的脑海里
您需要了解的是,当您操作git时,您正在处理以下级别的更改:
隐藏的目的。因此,每当您想使用分支时,您可以git stash
保存您的工作,您的工作区和索引都是干净的。完成后,您可以git stash pop
再次找到更改
从您所说的,对最后一部分有一个误解:本地更改和对索引的更改不是相对于分支的,而是相对于您的文件系统的。如果更改分支,它们将保留在那里并应用于新分支(如果可能,否则会出现错误)。如果未提交,则更改不属于任何分支。它们只是对文件的本地编辑。长话短说:当您处理原始分支时,在您的工作树上所做的更改,当您签出另一个分支时,git在签出时进行了更改。。。但它们仍将像切换分支之前一样未提交。如果你清理干净了,那么。。。。他们已经死了。