Git暂存(stash)常见问题解答

5
我正在运行msysgit 1.7.3.1。如果我运行stash apply,而且有冲突,所有我的存储更改都会被暂存。这是正确的行为吗?我觉得有点惊讶。
另一个问题:如果我已经存储了10个文件,并且其中一个文件有冲突,当stash apply遇到冲突时,它会中止操作还是应用所有非冲突的文件?
最后,如果我执行以下操作:
git stash
git pull
git stash apply

如果另一个开发人员删除了我隐藏的文件,那么我就无法在该文件上应用隐藏。我该如何从隐藏中检索我的更改?谢谢!

1
对于有兴趣的人,请访问以下链接:http://article.gmane.org/gmane.comp.version-control.git/159136 - alternative
1个回答

6

索引用于指示这些文件没有冲突。您的有冲突的文件不应在索引中。

关于这10个文件,Stash会将剩下的9个添加到索引中。解决剩下的文件中的冲突,将其添加到索引中,然后提交。

关于丢失的存储变更,您可以通过执行git checkout (stash-SHA1或其他引用)--文件规范来获取您的文件。

您还可以将存储更改为分支,然后可以检出并进行更多操作。

希望这可以帮助您。


2
好的,我明白了。索引用于跟踪没有冲突的文件。然而,我的工作流通常是这样的: - Jacko
3
我的工作流程通常是这样的:1)在处理某个任务时,工作目录会变得杂乱无序;2)想要拉取别人的更改;3)储藏当前的更改;4)拉取更改;5)应用储藏的更改;6)继续工作。在应用储藏的更改后,我通常不准备立即提交更改,这就是为什么我的储藏文件被暂存是出人意料的原因。 - Jacko
7
被应用的隐藏更改存储在索引中是有意设计的。当你继续工作时,那些工作不会被暂存。这样你就可以区分自从应用藏匿以来所做的更改。 - Adam Dymitruk
1
啊啊啊,现在有意义了。这个事实是git口头传统的一部分,由父亲传给儿子,还是写在某个地方了?我在手册和网上搜索中都找不到这样的信息。感谢提供信息!!! - Jacko
等一下,admitruk,我觉得你对于为什么stash将非冲突更改放入索引中给出了两种不同的解释。 - Jacko
3
区分冲突和非冲突修改,以及区分已存储的修改与随后的修改。#1 有意义,但如果 #2 是真的,那么即使没有冲突,修改也会被索引,这是不可能发生的。我希望文档能解决这个问题…… - Jacko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接