繁体   English   中英

在Git中隐藏然后重新安置

[英]Stashing then Rebasing in Git

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

我必须从另一个dev分支重新定基,但是我想先存储我的更改。

如果我执行git stash,然后git重新调整了dev分支的基础,是否会丢失stash?

如果我执行git stash,然后git重新调整了dev分支的基础,是否会丢失stash?

没有。

记住,隐藏只是没有分支的提交1 像任何提交一样,它会一直保留直到不再有名称为止。 这意味着,只要可以通过stash名称找到它,它就仍在您的存储库中。 2

您最终将需要git stash apply保存的stash,然后,如果一切似乎都可行,则git stash drop保存的stash以从名称stash删除对提交的访问。 实际上,提交会在一段时间后自行消失,但实际上, git stash drop会将其删除。

请注意, git stash pop只是git stash apply && git stash drop :即应用该stash,然后,如果Git认为该应用程序有效,则删除该stash。 如果您将隐藏存储应用到了您想要的地方以外的地方(这种情况经常发生),并且Git在这里看到了成功,那么您现在就失去了存储存储。 因此,以防万一,最好养成分开应用然后放下的习惯。

旁注:从Git版本2.6开始, git rebase可以在重新建立基础之前自动隐藏。 我本人不喜欢这种模式,但是如果您喜欢,请参阅--autostash选项为何不起作用? (与git pull --rebase一起使用)VonC对一个相关问题的回答 ,其中指出了直到Git 2.14才修复的错误。


1实际上至少是两次提交,有时是三个; 但是直到您开始使用存储进行高级操作之前,它们的作用就像一次提交一样。

2这意味着您不应命名分支stash 如果您这样做的话, Git会很好,但是您可能会感到困惑。 :-)

不,你不会丢掉藏匿处 Git很少会删除引用,除非您明确地引用它,然后再执行gc

您可以安全地存储更改,重新设置基础或签出另一个分支,然后applypop的更改。 如果您执行git stash pop且更改发生冲突,则git将应用您的更改(并显示合并冲突),但不会自动将stash从隐藏的提交中弹出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM