Git与stash pop混淆

时间:2012-09-14 22:50:15

标签: git git-flow

我现在遇到一些麻烦我正在使用git flow并创建了一个名为feature/newbranch的功能,我正在开发。我想隐藏我的更改并将其保存到feature/newbranch所以我认为我所要做的就是:

git stash  (in develop)
git checkout 'feature/newbranch'
git stash pop

这会改变我的新分支,但是当我开始发展

git checkout develop

我所有的藏匿变化仍在那里。

我做错了吗?

3 个答案:

答案 0 :(得分:3)

在您提交之前,没有任何内容放入分支。你在这里做的是将藏匿的内容放入工作树中。

通过阅读以下问题的最佳答案,您应该会有更好的想法:Difference between HEAD / Working Tree / Index in Git

答案 1 :(得分:2)

未提交的更改仅存在于工作目录中,并且未绑定到特定分支。 如果要将隐藏的更改应用于分支,请使用git stash apply而不是git stash pop。 git stash pop将自动丢弃最近的藏匿处,而git stash apply仅应用它,但不会将其删除。

答案 2 :(得分:2)

不,git stash pop仅尝试应用上次执行git stash时保存的修补程序/更改。它不会对当前分支进行任何更改。如果你弄脏你工作的树,即使你切换分支也会变脏。有时你甚至无法通过污垢工作树来切换树枝。

要在切换分支之前清理当前工作树,您应该执行git reset --hard