在 Git 中存储然后重新定基
Stashing then Rebasing in Git
我当前的分支中有一些未提交的更改。
我必须从另一个开发分支变基,但我想先存储我的更改。
如果我执行 git 存储然后我 git 重新设置开发分支的基线,我会丢失存储吗?
不,你不会丢失藏品。 Git 很少会删除 refs,除非你明确说明然后再做 gc
。
您可以安全地存储更改、变基或检出另一个分支,然后 apply
或 pop
您存储的更改。如果您执行 git stash pop
并且更改发生冲突,git 将应用您的更改(并显示合并冲突)但不会自动弹出隐藏的提交。
If I do a git stash then I git rebased the dev branch, will I lose the stash?
没有
记住,存储只是 no 分支上的提交1。像任何提交一样,它会一直存在,直到它不再有名字。这意味着只要它可以通过名称 stash
找到,它仍然在您的存储库中。2
您最终将需要 git stash apply
保存的存储,然后如果一切似乎都有效,git stash drop
保存的存储以从名称 stash
中删除对提交的访问.提交实际上会在一段时间后自行消失,但实际上,git stash drop
将其删除。
请注意 git stash pop
只是 git stash apply && git stash drop
:即应用存储,然后如果 Git 认为该应用程序有效,则删除藏。如果您将存储应用到其他地方而不是您想要的地方——这种情况经常发生——并且 Git 在这里看到成功,那么您现在已经丢失了存储。所以最好养成先申请后放弃的习惯,以防万一。
旁注:自 Git 2.6 版以来,git rebase
可以在变基前自动隐藏。我自己不喜欢这种模式,但如果你喜欢,请参阅 and ,它指出了一个直到 Git 2.14.
才修复的错误
1实际上至少 两次 次提交,有时是三次;但在您开始使用存储进行高级操作之前,它们就像一次提交一样。
2这意味着你不应该命名一个分支 stash
。 Git 如果你这样做就好了,但你可能会感到困惑。 :-)
我当前的分支中有一些未提交的更改。
我必须从另一个开发分支变基,但我想先存储我的更改。
如果我执行 git 存储然后我 git 重新设置开发分支的基线,我会丢失存储吗?
不,你不会丢失藏品。 Git 很少会删除 refs,除非你明确说明然后再做 gc
。
您可以安全地存储更改、变基或检出另一个分支,然后 apply
或 pop
您存储的更改。如果您执行 git stash pop
并且更改发生冲突,git 将应用您的更改(并显示合并冲突)但不会自动弹出隐藏的提交。
If I do a git stash then I git rebased the dev branch, will I lose the stash?
没有
记住,存储只是 no 分支上的提交1。像任何提交一样,它会一直存在,直到它不再有名字。这意味着只要它可以通过名称 stash
找到,它仍然在您的存储库中。2
您最终将需要 git stash apply
保存的存储,然后如果一切似乎都有效,git stash drop
保存的存储以从名称 stash
中删除对提交的访问.提交实际上会在一段时间后自行消失,但实际上,git stash drop
将其删除。
请注意 git stash pop
只是 git stash apply && git stash drop
:即应用存储,然后如果 Git 认为该应用程序有效,则删除藏。如果您将存储应用到其他地方而不是您想要的地方——这种情况经常发生——并且 Git 在这里看到成功,那么您现在已经丢失了存储。所以最好养成先申请后放弃的习惯,以防万一。
旁注:自 Git 2.6 版以来,git rebase
可以在变基前自动隐藏。我自己不喜欢这种模式,但如果你喜欢,请参阅
1实际上至少 两次 次提交,有时是三次;但在您开始使用存储进行高级操作之前,它们就像一次提交一样。
2这意味着你不应该命名一个分支 stash
。 Git 如果你这样做就好了,但你可能会感到困惑。 :-)