如何从Commit创建GIT Stash?

eto*_*xin 6 git github

我想从分支上的提交创建一个新的GIT存储.这甚至可能吗?

dav*_*avo 21

为什么?就我而言,我有一个已取消的拉取请求,我需要使用该代码作为另一个分支中另一张票证的起点。

好吧,我所做的是git cherry-pick --no-commit <your commit hash>

然后git stash push --message "wip or whatever"

  • 这是一个很好的答案。我从来不知道没有承诺的樱桃采摘!我现在刚刚使用它成功了。有人要求我将一些纯粹的重构移至单独的提交中。我已经推送到远程,因此无法编辑上次提交。 (2认同)

Uzb*_*jon 5

但为什么?如果您有提交,则表示您已将这些更改应用于您的文件.自提交以来,某些文件可能已被更改,但是,如果您尝试获取该提交更改的存储,则存储将是您当前文件的差异以及提交时这些文件的状态.我想说的是,当你需要时,我想不出一个案例.

但无论如何,你可以获得提交的更改,创建差异,应用它然后隐藏任何差异.

git diff YOUR-COMMIT^ YOUR-COMMIT > stash.diff
git apply stash.diff
git commit .
git stash
Run Code Online (Sandbox Code Playgroud)

您不必创建临时stash.diff文件.你可以直接git diff输出到git apply.

  • `YOUR-COMMIT^` 是 `YOUR-COMMIT` 之前的一次提交。diff 命令基本上显示您的提交与之前的提交之间的差异,然后将其保存到 _stash.diff_ 文件中。 (3认同)
  • 你提出了一个很好的案例。我想我应该使用“cherry-pick”来代替。 (2认同)

Chr*_*row 5

在源树中:

  • 右键单击要隐藏的提交
  • 选择“樱桃采摘”
  • 取消选择在成功合并后立即提交的选项
  • 这会将更改应用到您的本地副本
  • 然后你可以把它们藏起来