【问题标题】:Checkout another branch and not commit the code, can I get the code before checkout结帐另一个分支而不提交代码,我可以在结帐前获取代码吗
【发布时间】:2021-09-29 10:32:51
【问题描述】:

我签出另一个分支(branch2)并忘记提交代码(在branch1中),当我再次签出这个分支(branch1)时,代码已经丢失。如何在结帐前获取代码?

【问题讨论】:

标签: git


【解决方案1】:

除非您先进行重置,否则更改应该仍然存在。

【讨论】:

    【解决方案2】:

    至少有一种情况,当您更改分支时,git 会默默地“忘记”暂存文件中的更改:当暂存文件与目标分支中的文件具有完全相同的内容时。

    在这种情况下,git 将允许您切换分支,并为该文件保留相同的内容——因此不会再显示为已修改。

    如果您想切换回原来的分支,那么您有责任确定应该从其他分支取回哪些文件;但至少,它们应该具有您期望的内容。


    这就是为什么您会看到建议提交您的更改,或者至少在更改分支之前将它们藏起来(使用git stash)。


    还有一个极端情况,在切换分支时可能会弄乱磁盘上的文件内容:

    • 如果在分支A 上忽略文件foo.txt(通过.gitignore 规则),
    • 和文件foo.txt 存在并在分支B 中进行版本控制,

    然后从分支A 切换到分支B 将默默地用其版本化内容替换foo.txt 的内容(用git 2.33 测试,git checkoutgit switch 都会发生这种情况)。

    我还没有阅读其他可能的极端情况的代码,在我的机器上测试了一些基本情况表明git 没有尝试更复杂的事情;如果对文件有任何其他类型的修改,git checkoutgit switch 应该会出错并显示显式消息。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2012-07-26
      • 2021-11-05
      • 2019-11-17
      • 2016-02-09
      • 2016-08-17
      • 2020-10-10
      • 2020-10-21
      • 2022-06-26
      相关资源
      最近更新 更多