Git Stash的新分支会影响其他存储吗?

时间:2019-07-05 07:58:32

标签: git git-stash

我有一个master分支,在该分支上隐瞒了多个更改,现在我想根据{0}处的隐隐更改创建一个新分支。但是我怀疑创建新分支不会影响我的其他存储,因为git将在创建新分支后删除我的存储。 git将仅丢弃存储在{0}索引处的存储,还是会丢弃所有存储?隐匿的变化对我来说太重要了。

1 个答案:

答案 0 :(得分:1)

简短的答案:不用担心,隐藏条目彼此独立。去吧。


带有视觉表示的案例研究

为了帮助描述它,可以将隐藏项视为不相关提交的列表,每个提交都指向回购树中的不同点。

请参见下面的假设情况

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

以及以下假设情况

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

假设您藏了3次:

  • 在第一次尝试提交feature/abc时一次于G,因为您对第一种方法完全不满意,但想以防万一。

  • 提交H之后,在处理bugfix / 123时
  • 被中断,并且不得不切换分支。稍后,您回到bugfix/123,然后执行git stash apply而不是git stash pop,以使条目保持活动状态,以便以后重用/检查。

最后

  • L工作期间,必须在feature/xyz之后再次藏匿

(操作按该顺序进行。)

造成的藏匿情况

这时您的存储清单看起来像

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中按顺序列出,但实际上是无关的。