我有一个master分支,在该分支上隐瞒了多个更改,现在我想根据{0}处的隐隐更改创建一个新分支。但是我怀疑创建新分支不会影响我的其他存储,因为git
将在创建新分支后删除我的存储。 git
将仅丢弃存储在{0}索引处的存储,还是会丢弃所有存储?隐匿的变化对我来说太重要了。
答案 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指向哪个提交项,
L
是f1d6b3a
的父级(我们将其称为L'
)
H
是94722ae
的父级(我们将其称为H'
)
F
是4fb4785
的父级(我们称之为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
中按顺序列出,但实际上是无关的。