gpt4 book ai didi

git - 应用 git stash 时,我可以影响 "recursive"使用的 merge 策略吗?

转载 作者:太空狗 更新时间:2023-10-29 13:16:45 27 4
gpt4 key购买 nike

我在 git 存储槽中有一组调试实用程序;我在分支之间移动,这些分支在存储的变化方面只有很小的差异。我 git stash apply 各自分支上的 top stash 来测试一个特性。

但是我在一个分支中遇到了适当的 merge 冲突,但我想更喜欢存储中的内容,所以我希望 merge 策略“递归”更喜欢来自存储的版本(我 猜测那将是“他们的”,参见 man git-merge 部分 MERGE-STRATEGIESrecursive 小节)。

我能以某种方式告诉 git stash apply 使用什么 merge 策略吗?

最佳答案

是的,您可以自己进行 merge 。存储提交的命名为 stash

git cherry-pick -n -m1 -Xtheirs stash

Cherrypick 以 cherrypick 的父级为基础进行 merge 。 Stash commits record the worktree state with two parents, the checked-out commit and the stashed index .

-m1 告诉 cherrypick 使用第一个父级作为 merge 基础,因为这里对于您想要 merge 的确切更改有任何歧义。 -n 表示不提交结果。

这将生成一个工作树和索引,其中的更改与 stash 的工作树中的更改相匹配。相反,如果您想在 stash 索引中应用更改,请改用 cherrypick stash^2;或者,如果您想将 stash 索引的更改(即添加的又名分阶段又名索引内容)应用到 stash 的工作树,请使用 -m2 而不是 -m1

如果你想 merge 到工作树,做

savetree=`git write-tree`
git cherry-pick -n -m1 -Xtheirs stash
git read-tree $savetree

这足以处理此处问题中的情况(应用一组方便的更改),但它并不能完全重现 stash 为您所做的一切。仅将 stash 的索引更改应用于当前索引,并将 stash 的工作树更改仅应用于当前工作树,这简直是太挑剔了。 git stash/usr/libexec/git-core/git-stash 中的一个脚本,如果有人想看的话。

关于git - 应用 git stash 时,我可以影响 "recursive"使用的 merge 策略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com