【发布时间】:2013-09-13 12:52:58
【问题描述】:
是否可以修改默认的git-merge-one-file 程序以在不触及工作树的情况下完成索引中的所有操作,使其完全不被修改?
更新和详情
所以我现在明白,如果不使用工作树,就无法进行文件级合并(合并作用于文件中的行而不是整个文件)。 (与作用于整个文件的合并不同。)所以我将不得不使用工作树。
另一个细节:我同意该解决方案仅适用于无需手动解决即可自动完成合并的情况。如果合并不是自动的,它只显示错误消息也没关系。 (当然,让一切保持清洁。)
另一个细节:我没有直接使用git-merge-one-file,我在这个脚本中使用它:https://gist.github.com/cool-RR/6575042
我尝试遵循 @torek 的建议并使用临时工作树(如您在脚本中所见),因为这似乎是迄今为止最好的方向。问题是,我收到这些错误:
git checkout-index: my_file is not in the cache
error: my_file: cannot add to the index - missing --add option?
我用谷歌搜索了这些错误消息,但找不到任何有用的信息。
知道该怎么做吗?
【问题讨论】:
-
目标是什么?表现?预览另一个脚本的合并?保留内容?
-
@WillPalmer 目标是在我的脚本中使用它,该脚本将分支
a合并到分支b而不需要签出其中任何一个,并且使用临时索引文件所以索引文件和工作目录都没有被触及。 -
@RamRachum 正如我提到的in my answer below,据我所知,只有
git notes这样做。它在内部、专用和临时工作树中进行合并 -
@VonC 我想尝试使用内部的、专用的和临时的工作树,我试过了,但我得到了上面显示的错误。 (C 代码对我没有帮助,我不会读 C。)
-
@RamRachum 也许您也需要指定
git-dir(指向您的repo/.git文件夹)。如果不是,那么我引用的实现是我知道的唯一方法......
标签: git