git stash更改是否适用于新分支?


Answers:


501

标准程序不起作用吗?

  • 做出改变
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

更短:

  • 做出改变
  • git stash
  • git checkout -b xxx
  • git stash pop

8
@sfletche如果要命名存储,则需要执行git stash save <name>,否则,就像您说的那样,它与git stash相同。
SgtPooki 2014年

5
使用此方法后,似乎如果返回到上一个分支,则隐匿的更改已返回。只能在新分支上进行隐藏的更改吗?
托马斯·希金伯瑟姆

只需将更改提交到新分支即可。
克里斯(ChrisR)2015年

2
@ThomasHigginbotham否工作目录在分支之间是公用的,当您从一个分支传递到另一个分支时,它会从一个目录复制到另一个目录。为了“实现”您想要的东西,我通常会进行不同的存储,并使用git stash save "description"前面提到的命令添加有用的描述。然后是我git clear的分支(用于破坏实际的工作目录),然后git stash apply stash@{my_desired_stash}进入所需的分支(git checkout <branch>显然是切换到该分支之后)。我知道这不是一个真正的解决方案,但这是您可以使用git做到的最好的解决方案。
卡马菲瑟(Kamafeather),2015年

git stash drop承诺后,我也最终确定了这一点
奇数表

221

既然您已经保​​存了更改,那么您所需的就是这种单行代码:

  • git stash branch <branchname> [<stash>]

从文档(https://www.kernel.org/pub/software/scm/git/docs/git-stash.html):

创建并签出一个名为<新的分支分支名称 >开始从提交在该< 藏匿 >最初创建,适用记录在<修改藏匿 >新的工作树和索引。如果成功,并且< stash >是stash @ {< 修订版 >} 形式的引用,则它将删除< stash >。如果没有给出< stash >,则应用最新的。

如果您在其上运行git stash save的分支已更改得足够多,以至于git stash应用由于冲突而失败,这将很有用。由于存储是在运行git stash时是HEAD的提交之上应用的,因此它可以恢复原始存储状态,而不会发生冲突。


3
对于单个藏匿处,这是要走的路。存储区名称引用不是必需的,因为Git将应用最新的存储区,切换到新分支并在1个命令中应用存储区。
sinisterOrange 2014年

@RodneyGolpe这似乎也将藏匿地应用于“主人”?我想做的是,从'master'开始,git stash,然后我期望'git stash分支[branchname]会将其应用到新分支,而使master没有编辑?
David Doria

2
@DavidDoria您必须先将更改提交到新分支,然后再返回master。
Rodney Golpe

现在这也将更改提交给master了。。。我真的很茫然。显然,我仍然不太了解git。经过软重置主机,然后从远程存储库中拉出我现在是我想要的位置。主人处于更改前的状态。新分支保存更改。
Ekkstein'3

1

如果您在工作空间上进行了某些更改,并且想要将它们存储到新分支中,请使用以下命令:

git stash branch branchName

它将使:

  1. 一个新的分支
  2. 将更改移到该分支
  3. 并删除最新的存储(例如:git stash pop)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.