来自 Git 个 Stash 的新分支会影响其他 Stash 吗?

New branch from Git Stash will affect other stashes?

我有一个主分支,我在其中存储了多个更改,现在我想从 {0} 处的存储更改创建一个新分支。但我怀疑创建新分支不会影响我的其他存储,因为 git 会在创建新分支后删除我的存储。 git 只会删除位于 {0} 索引处的存储,还是会删除所有存储?隐藏的更改对我来说太IMP了。

简答:不用担心,隐藏条目彼此独立。加油吧。


更长的答案:(有一个直观的例子)

为了帮助描绘它,可以将存储视为不相关提交的列表,每个指向 repo 树中的不同点。

参见下面的假设情况

        F---G <<< feature/abc
       /
      /           H---I <<< bugfix/123
     /           /     \
A---B---C---D---E---F---J <<< master
         \
          \
           K---L---M <<< feature/xyz

和以下假设情景

在过去的几天里,您在这些不同的分支上工作时多次隐藏更改。

假设你藏了三次 :

  • 一次 feature/abc 在你第一次尝试提交 G 时,因为你对你的第一种方法完全不满意,但想把它放在手边以防万一。

  • 然后你在 bugfix/123 上工作时被打断了,在提交 H 之后,不得不切换分支。后来你回到 bugfix/123 然后做了一个 git stash apply 而不是 git stash pop 来保持条目在存储中存活以供以后 reuse/inspection.

最后

    feature/xyz 工作时
  • L 之后不得不再次藏起来

(操作按此顺序进行。)

结果隐藏情况

此时你的隐藏列表看起来像

stash@{0}: WIP on feature/xyz: f1d6b3a unfinished - get rid of var dumps
stash@{1}: WIP on hotfix/123: 94722ae unfinished - css still broken
stash@{2}: WIP on feature/abc: 4fb4785 no good - test T1 failed

但重要的一点是,因为存储条目在创建条目时会作为父项,无论哪个提交 HEAD 指向 :

Lf1d6b3a 的父级(我们称它为 L'
H94722ae 的父级(我们称它为 H'
F4fb4785 的父级(我们称它为 F'

在树中可以表示为

          F' <<< stash@{2}
         /
        F---G <<< feature/abc      H' <<< stash@{1}
       /                          / 
      /                          H---I <<< bugfix/123
     /                          /     \
A---B---C---D------------------E---F---J <<< master
         \
          \
           K---L---M <<< feature/xyz
                \
                 L' <<< stash@{0}

那么很容易看出,尽管它们在您的 stash list 中按顺序列出,但实际上它们是无关的。