代码之家  ›  专栏  ›  技术社区  ›  lost9123193

在Git中存储然后重新定位

  •  2
  • lost9123193  · 技术社区  · 6 年前

    我的当前分支中有一些未提交的更改。

    我必须从另一个dev分支重新调整位置,但我想先保存我的更改。

    如果我做了一个git存储,然后git对dev分支进行了回扣,我会丢失这个存储吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   torek    6 年前

    如果我做了一个git存储,然后git对dev分支进行了回扣,我会丢失这个存储吗?

    不。

    记住,藏起来就是承诺 这是关于 分支机构。就像任何承诺一样,它会一直坚持到没有名字为止。也就是说只要能找到它的名字 stash ,它仍在您的存储库中。

    你最终需要 git stash apply 保存好的储藏室,如果一切都正常, git stash drop 从名称中移除对提交的访问的保存的存储 藏匿处 . 事实上,一段时间后,提交会自行消失,但实际上, git stash drop公司 删除它。

    注意 git stash pop 只是 git stash apply && git stash drop :即,应用存储,然后如果 吉特 认为应用程序有效,就放弃这个存储。如果你把藏在你想去的地方以外的地方 吉特 看到这里的成功,你现在已经失去了你的藏身之所。所以最好养成分开使用的习惯,然后放弃,以防万一。

    旁注:自从git版本2.6以来, git rebase 可以在重新定位前自动隐藏。我自己也不喜欢这种模式,但如果你喜欢,看 Why won't --autostash option work ??? (used with git pull --rebase) VonC's answer to a related question ,它指出了一个直到git 2.14才修复的错误。


    实际上至少 承诺,有时是三次;但是直到你开始用藏物做高级的事情,他们的行为就像一次承诺。

    这意味着你不应该命名一个分支 藏匿处 . 吉特 如果你这样做就好了,但你可能会感到困惑。-)

        2
  •  1
  •   coreyward    6 年前

    不,你不会丢了储藏室的 . Git很少删除ref,除非您明确地说明它,然后执行 gc .

    您可以安全地保存更改、调整或签出另一个分支,然后 apply pop 你藏起来的零钱。如果你做了 git stash pop 而更改冲突,git将应用您的更改(并显示合并冲突),但不会自动弹出隐藏提交的隐藏。