83

我想它允许将更改从一个分支移动到下一个分支,但这就是樱桃采摘的目的,如果您没有提交更改,也许您不应该移动它们?

我有时在错误的分支上应用了错误的存储,这让我想知道这个问题。

4

4 回答 4

69

如前所述,如果你想要一个“每个分支的存储”,你真的想要一个从现有分支分叉的新分支。

此外,除了已经提到的事实,即 stash 允许您拉入正在处理的分支中,它还允许您在提交所有内容之前切换分支。这对于通常意义上的挑选工作非常有用,而不是对挑选工作副本有用。

F.ex.,在处理功能分支时,我经常会注意到代码中与该分支无关的小错误或外观杂质。好吧,我只是马上解决这些问题。到了提交的时候,我会选择性地提交相关的更改,而不是修复和修饰。相反,我存储了这些,这允许我切换到我的小修复分支,然后我可以在其中应用存储并分别提交每个小修复。(根据有问题的更改,我还将再次存储其中一些,以切换到不同的功能分支,我将在其中应用这些。)

这使我可以在工作时深入编程模式,而不必担心代码的正确库管理。然后,当我休息一下时,我可以回去仔细地将我的更改分类到所有合适的架子上。

如果存储不是全局的,那么这种类型的工作流将很难做到。

于 2008-09-18T11:26:17.093 回答
21

从 Git 1.6 开始,您现在可以使用

git stash branch name_of_new_branch

Git 将为您创建新分支,并检查一下!有关详细信息,请参阅

  • git书

  • info git-stash并搜索 option= branch

我猜你可以移动藏匿处使用

git stash branch <branch | new_branch> [<stash>]

并查看您的存储列表,请使用

git stash list

参考

于 2012-07-09T04:27:06.027 回答
17

如果您想要一个从分支运行的“存储”,请执行以下操作以将您的更改存储在当前分支的新分支上。

git checkout -b new_stash
git commit -a -m "stashed changes"

撤消存储

git reset HEAD^
git branch -d new_stash

git stash 特别有用,因为您可以将更改拉入脏树中,即,如果您有出色的编辑并想做

git pull

你不能,你可以存储你的更改,拉然后应用存储

git stash
git pull
git stash apply
git stash clear

希望这有帮助!

于 2008-09-18T02:49:44.167 回答
5

git-stash 对我来说最有用的是将尚未签入的更改移至与当前签出的分支不同的分支。

例如 - 我经常发现自己在错误修复分支上进行简单的更改;只是发现我正在进行的更改比我最初猜测的要复杂。Git-stash 是将这组更改移动到不同分支的最简单方法。

于 2009-02-12T20:44:25.337 回答