我正在寻找一种方法来应用我的存储补丁,以便逐步查看我正在应用的内容。
如果我做git stash apply 0
自动合并所有,如果在我运行后我
git diff
看不到更改。就像它自动上演所有。只有在应用后,在一个文件中存在一些冲突时,我才能解决冲突,并且在这样做之后,我可以看到未暂存的更改。
如何在申请过程中获得更多控制权,而不是全部应用代码并已暂存?
谢谢!
如何在申请过程中获得更多控制权,而不是全部应用代码并已暂存?
无论如何,你不能——至少是第一个近似值。
问题是git stash apply
使用合并引擎进行应用。合并引擎同时使用 Git 的索引和您的工作树。这里的术语索引是指与术语暂存区域相同的数据结构,存储在相同的位置。所以git stash apply
将使用——并因此搞乱——暂存区。
但是,正如phd 评论的那样,您不必使用git stash apply
. Usinggit stash show -p
得到一个补丁,然后你可以通过各种补丁处理操作来提供它。
还有另一种攻击方式:Git 并不总是必须使用(主)索引。您可以建立第二个临时索引并git stash apply
在该第二个索引中进行操作。如果你尝试这样做,请小心。您可能需要使用git read-tree
或仅将主索引复制到临时索引来填充临时索引。
这些都不是我推荐的方法,但是当你到达这一点时,我建议首先尽可能避免。 git stash
原因很简单:你已经遇到过。存储代码通过提交来工作。这些提交在内部具有合并的形式,这意味着 Git 的其余部分不能很好地使用这些提交。只有git stash
它自己知道如何使用这些特殊的存储提交。如果您不进行这些特殊的存储提交,而是进行普通的提交......好吧,Git 的其余部分非常清楚如何处理普通提交。您现在可以使用整个 Git 套件。你不必深入到 Git 来欺骗它;您不必回避事情就可以将藏匿处变成补丁。所有工具都以普通方式在这些普通提交上工作。