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

恩德外观

当我注意到更改太大时,我在master分支上工作,因此我决定将它们放在另一个分支上。因此,我git checkout -b new_branch_name在Git Bash上进行了操作,然后(没有在两个分支中的任何一个上提交),我放弃了master分支上的所有更改(从Github Desktop)。令我惊讶的是,这也放弃了新分支的更改,我以为它们没有链接。

如何撤消丢弃物?

编辑:

  • 变化:我尚未承诺的事情。
  • 舍弃:Github Desktop允许我舍弃(删除)未提交的更改。

对不起,我的术语不好,我是git新手。

mo

tl; dr:有疑问时:git stash

我不确定您所说的丢弃什么,因为这不在git术语之内。另外,我不确定您所说的是什么变化

因此,我假设通过更改意味着您已经完成但尚未完成的事情,即您的工作区或索引很脏

你在树枝上A

unstaged changes
      ↑
      A
      ↑
      …

并且您创建了一个新分支 B

unstaged changes
       ↑
     A,B
       ↑
       …

然后,您执行了您所谓的Discard,但实际上是reset --hard当前分支的。

     A,B
       ↑
       …

如果是这样,那么很抱歉告诉您您的更改丢失了。

永远消失了。

而且,只要您仍然脑海中新鲜,就应该赶快重写它们。

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

  1. 您的工作空间:您所做的任何更改都显示为未暂存
  2. 您的索引:您为下一次提交添加的任何更改
  3. 您当前的分支机构:您所做的一切
  4. 远程分支机构:无论您推动什么

根据经验,如果不在提交中(即1.或2.),则它可以消失。否则,有解决问题的解决方案。

但是您有时想要保护脏索引而不进行新的提交。这就是它的stash用途。因此,每次您要使用分支机构时,都可以git stash保存工作,工作空间和索引是干净的。完成后,您可以git stash pop并且会再次找到您的更改。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章