当我试图通过检查工作树的路径将我的工作树更改与tree-ish上的文件合并时,前一个更改会被后面的更改覆盖。
我没想到会有这种行为。相反,我希望Git将文件内容替换为默认、合并或diff3样式中显示的冲突标记,具体取决于--merge、--conflict=merge或--conflict=diff3选项是否提供给git checkout。
给定以下用例:
git init
echo foo > foobar
git add foobar
git commit --message=blabla foobar
echo bar > foobar
git checkout --conflict=diff3 HEAD -- foobar我失去了使用echo bar > foobar所做的本地更改。
此外,为什么手册页git-checkout(1)在概要git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>…中提到-m和--conflict=<style>选项?这两种选择的目的是什么?
我在Microsoft 7上使用git版本1.9.4.msysgit.2。
发布于 2015-03-19 14:48:42
我明白为什么你期望这种行为--在描述你所得到的行为时,医生会说“当从索引中签出路径时”,在我看来,这就像是一个文档错误。注意,当描述您想要的行为时,它表示“切换分支时”。我和你一样误读了那双,也同样感到惊讶。
我认为,要准确地描述它现在正在做的事情,文档应该只说“当检查路径时”,并丢失“从索引”部分,但我也会为您想要的部分而争论,对于合并行为,“从提交还是树中签出路径时”将是一个更好的选择,而且应该更改为这样的方式--这一过程更容易被证明,因为atm实际上并没有说明它在这里要做什么。
https://stackoverflow.com/questions/29146968
复制相似问题