如何撤消git上的放弃更改?

如何撤消git上的放弃更改?,git,github,Git,Github,当我注意到更改太大时,我正在处理主分支,我决定在另一个分支上进行更改。因此,我在git Bash上执行了git checkout-b new_branch_name,然后(在两个分支上都没有提交)放弃了主分支上的所有更改(从Github桌面)。令我惊讶的是,这也放弃了新分支的更改,我认为它们没有关联 如何撤消放弃操作? 编辑: 变化:我没有承诺的事情 Discard:Github Desktop允许我放弃(删除)未提交的更改 对不起,我的术语不好,我是git新手 tl;dr:有疑问时:git

当我注意到更改太大时,我正在处理主分支,我决定在另一个分支上进行更改。因此,我在git Bash上执行了
git checkout-b new_branch_name
,然后(在两个分支上都没有提交)放弃了主分支上的所有更改(从Github桌面)。令我惊讶的是,这也放弃了新分支的更改,我认为它们没有关联

如何撤消放弃操作?

编辑:

  • 变化:我没有承诺的事情
  • Discard:Github Desktop允许我放弃(删除)未提交的更改
对不起,我的术语不好,我是git新手

tl;dr:有疑问时:
git stash

我不确定您称之为discard,因为这不在git术语范围内。还有,我不知道你所说的改变是什么意思

所以我想,所谓的改变,是指你已经做了但没有完成的事情,也就是说,你的工作区或索引变脏了

您在分支机构
A

unstaged changes
      ↑
      A
      ↑
      …
您创建了一个新分支
B

unstaged changes
       ↑
     A,B
       ↑
       …
然后你做了一个你称之为丢弃的操作,但实际上是一个当前分支的
重置--hard

     A,B
       ↑
       …
如果是这样,那么我真的很抱歉地告诉你,你的更改丢失了

永远消失。

你应该尽快重写它们,只要它还在你的脑海里

您需要了解的是,当您操作git时,您正在处理以下级别的更改:

  • 您的工作区:您所做的任何显示为未老化的更改
  • 您的索引:为下一次提交添加的任何更改
  • 你现在的分支机构:不管你做了什么
  • 远程分支:不管你推了什么
  • 根据经验,如果它不在提交中(即1或2),那么它可能会消失。否则,就有解决问题的办法

    但有时您希望在不进行新提交的情况下保护脏索引。这就是
    隐藏的目的。因此,每当您想使用分支时,您可以
    git stash
    保存您的工作,您的工作区和索引都是干净的。完成后,您可以
    git stash pop
    再次找到更改


    从您所说的,对最后一部分有一个误解:本地更改和对索引的更改不是相对于分支的,而是相对于您的文件系统的。如果更改分支,它们将保留在那里并应用于新分支(如果可能,否则会出现错误)。

    如果未提交,则更改不属于任何分支。它们只是对文件的本地编辑。长话短说:当您处理原始分支时,在您的工作树上所做的更改,当您签出另一个分支时,git在签出时进行了更改。。。但它们仍将像切换分支之前一样未提交。如果你清理干净了,那么。。。。他们已经死了。