【发布时间】:2017-05-03 21:46:15
【问题描述】:
当我执行git stash pop 时如何指定默认合并策略?
我试过了
git stash pop --theirs
但这不起作用。
【问题讨论】:
标签: git
当我执行git stash pop 时如何指定默认合并策略?
我试过了
git stash pop --theirs
但这不起作用。
【问题讨论】:
标签: git
这现在是可能的:
git cherry-pick -n -m1 -Xtheirs stash
文字字符串stash 现在表示顶部的存储条目(您也可以为下面的条目执行stash@{1},依此类推。
有关其工作原理的更多详细信息,请访问this answer。
【讨论】:
因此,如果您在 git stash pop 发生冲突后到达这里,看起来像这样:
$ git stash pop
Auto-merging foo.json
CONFLICT (content): Merge conflict in bar.json
您宁愿丢弃您在bar.json 中保存的内容,最简单的方法是查看我们的:
$ git checkout --ours bar.json
从藏匿处出来的东西被认为是“他们的”。因此,如果您想丢弃它,请查看“我们的”。
【讨论】:
旁注:你不想要--theirs——这是git checkout 的一个选项,而不是合并——并且没有-s theirs 策略,只有-X theirs 策略选项(我喜欢称这些“扩展选项”以区别于-s 策略)。
但是,答案是您不能:它根本不支持作为 git stash 代码的一部分。
可以用不同的方式来做。 The git stash script 是一个 shell 脚本,您可以复制和修改或零碎运行它的各个位,运行 git merge-recursive $b_tree -- $c_tree $w_tree 以合并到隐藏的工作树提交中。您可以手动执行此操作,也可以通过复制和修改脚本以及额外的-X 扩展选项来执行此操作。但是,不能保证这样做what you want。它只会影响 Git 认为有冲突的部分,在这种情况下,它会偏向一侧或另一侧:-X ours 表示赞成 $b_tree-to-$c_tree 更改,而不是 $b_tree 到 @ 987654337@ 更改,-X theirs 表示赞成将$b_tree 更改为$w_tree。不过,您可能希望 $w_tree 提交的整个文件,或者不进行一些不会发生冲突的更改。
(进行自己的提交会更容易和更直接,您可以在私有分支上进行;然后您可以随时从该提交中提取单个文件和/或进行任何您喜欢的合并,并且不必担心 git stash 脚本的特定内部细节可能会从一个 Git 版本更改为另一个。请注意,要一次合并一个特定文件,您可以使用 git merge-file,但这有点笨拙。)
【讨论】: