git stash更改适用于新分支?

Yas*_*sai 313 git

我正在处理master分支,做了一些修改然后把它们藏起来了.现在,我的主人在HEAD.

但是现在,我想要检索这些更改,但要检索从主分支的HEAD版本分支的新分支.

我该怎么做呢 ?

And*_*ovs 451

标准程序不起作用吗?

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

短:

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

  • 更短:`git checkout -b xxx` (55认同)
  • 只是为了澄清@eckes`git checkout -b xxx`是做`git branch xxx HEAD`然后`git checkout xxx`的另一种选择.要实现OP想要的东西,你仍然需要执行`git stash`命令. (31认同)
  • “标准程序不起作用吗?” 当亚什询问标准程序是什么时,这是一个相当居高临下的问题。 (14认同)
  • 另一个捷径:`git stash`相当于`git stash save` (11认同)
  • @sfletche如果你想为你的存储命名你需要做git stash save <name>,否则,就像你说的那样,它与git stash相同. (8认同)
  • 使用此方法后,似乎如果返回到上一个分支,则返回隐藏的更改.是否有可能只对新分支进行隐藏更改? (5认同)
  • @ThomasHigginbotham 不,工作目录在分支之间是通用的,当您从一个分支传递到另一个分支时,它会从一个分支复制到另一个分支。为了“实现”你想要的,我通常会制作不同的 stash,用前面提到的 `git stash save "description"` 命令添加有用的描述;然后我`git clear`分支(用于删除实际工作目录),然后`git stash apply stash@{my_desired_stash}`在所需的分支中(显然是用`git checkout &lt;branch&gt;`切换到那个分支之后)。我知道这不是一个真正的解决方案,但它是你可以用 **git** 做的最好的解决方案。 (3认同)
  • git stash save 现已弃用,取而代之的是 git stash Push。它与“存储推送”的不同之处在于它不能采用路径规范,并且任何非选项参数都构成消息。 (2认同)

Rod*_*lpe 215

既然你已经隐藏了你的变化,你只需要这个单行:

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

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

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

如果运行git stash save的分支已经发生了足够的变化,git stash apply因冲突而失败,那么这很有用.由于存储是在运行git stash时的HEAD提交之上应用的,因此它会恢复原始存储状态而不会发生冲突.

  • 对于单个藏匿处,这是要走的路.存储名称引用不是必需的,因为Git将应用最新存储,切换到新分支并在1命令中应用存储. (3认同)
  • @DavidDoria您必须在返回master之前将更改提交到新分支. (2认同)

Ham*_*ndi 18

如果您对工作区进行了一些更改并且希望将它们存储到新分支中,请使用以下命令:

git stash branch branchName
Run Code Online (Sandbox Code Playgroud)

它将使得:

  1. 一个新分支(从最初创建存储的提交开始)
  2. 将更改移至此分支
  3. 并删除最新的存储(例如:git stash pop)

运行此命令后,您将需要git add更改并提交它们。