坚持使用git

时间:2016-02-10 20:08:33

标签: git git-stash

我正在使用git,但有很多东西需要学习。我想保存对文件的一些更改(但不提交)并转到另一个分支,看看那里的一些代码然后回到我正在处理的内容。就这样。所以我做了

> git stash
> git checkout
> vi ....
> git stash apply stash@{0}

并发现自己面临错误消息

Auto-merging schematic.f
CONFLICT (content): Merge conflict in schematic.f

我显然没有意识到隐藏申请是如何运作的。而现在我被卡住了。我无法想到的任何事情都会让我离开现在的分支并回到我正在工作的分支中。我一遍又一遍地收到同样的错误信息。我怎么摆脱这个?感谢。

1 个答案:

答案 0 :(得分:2)

幸运的是,apply意味着尝试在我当前的工作树中存储,但保留存储以使存储本身完好无损。 1 并且,根据你的命令序列(假设vi ...只是为了查看某些内容,而不是更改它),你的stash然后checkout应该在现在为你留下一个干净的工作树-current commit,所以你要做的就是强制work-tree匹配当前的commit,用:

git reset --hard HEAD

(请注意,git reset --hard会删除对工作树所做的任何更改,因此请确保所有更改都只是git stash apply所做的更改:您可能需要检查git status并且git diff首先,例如,只是为了加倍和三重确定。)

再次清理工作树后,您可以git checkout所做的分支希望更改,git stash apply存储,如果一切顺利,{ {1}}它。

1 出于这个原因,我总是建议使用git stash drop而不是git stash apply,尽管实际上git stash pop只会在存储干净的情况下丢弃存储,所以区别很小。