gpt4 book ai didi

Git 内部 : Modifying `git-merge-one-file` to not use working tree

转载 作者:太空狗 更新时间:2023-10-29 12:46:09 25 4
gpt4 key购买 nike

是否可以修改默认的 git-merge-one-file 程序以在不触及工作树的情况下执行索引中的所有操作,使其完全保持不变?

更新和细节

所以我现在明白,如果不使用工作树,就无法进行文件级 merge (其中 merge 作用于文件中的行而不是整个文件)。 (与对整个文件进行 merge 不同。)所以我将不得不使用工作树。

另一个细节:我同意该解决方案仅适用于无需手动解决即可自动完成 merge 的情况。如果 merge 不是自动的,它只显示一条错误消息也没关系。 (当然,保持一切干净。)

另一个细节:我没有直接使用 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?

我用谷歌搜索了这些错误消息,但找不到任何有用的信息。

知道要做什么吗?

最佳答案

虽然 git 需要一个地方来完成它的工作,但您可以在“merge 一个文件”操作期间将它指向不同的工作树位置。

我不知道这对于 merge-one-file 是否/如何“开箱即用”,但要设置的环境变量是 GIT_WORK_TREE:

env GIT_WORK_TREE=/some/where/else git ...

(对于大多数(但不是全部)shell,您可以省略 env)。

一个或多或少等效的方法可能“感觉更安全”:-) 或对某些目的更方便的是在另一个目录中工作,并使用 GIT_DIR 到 repo 的位置:

cd /some/where/else
env GIT_DIR=/place/with/repo/.git git ...

您甚至可以组合它们,同时设置 GIT_DIRGIT_WORK_TREE

关于Git 内部 : Modifying `git-merge-one-file` to not use working tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18786823/

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