gpt4 book ai didi

git - 在不存在的文件中进行更改的 Cherry-pick

转载 作者:行者123 更新时间:2023-12-05 08:29:48 26 4
gpt4 key购买 nike

我有两个具有相似架构的存储库:

repo1:
- file1
- file2 *(this file is non-existent in repo2)
- folder
- file3
- file4
- file5

repo2:
- file1
- folder
- file3
- file4
- file5

Repo1 对于 repo2 是远程的:

git remote add repo1 http://repo1.git

我需要挑选从 repo1 到 repo2 的提交

git cherry-pick <commit_repo1>

通常一切正常。但是如果我想挑选对不存在的文件的更改,我会遇到问题。

变化看起来像:

 folder/file4    | 9 ---------
folder/file5 | 5 -----
file1 | 5 -----
file2 | 5 -----
4 files changed, 24 deletions(-)

最后:Cherry-pick merge 从不存在的文件更改为 file3。仅用于删除更改

如果需要的文件不存在,有人知道如何避免将更改 merge 到错误的文件吗?

尝试:

git cherry-pick --strategy-option theirs <commit_repo1>
git cherry-pick --strategy-option ours <commit_repo1>

给出相同的结果:

Auto-merging folder/file3 !!! this file was not changes (instead changed in file2)
Auto-merging folder/file4
Auto-merging file1

最佳答案

Auto-merging folder/file3

这看起来像是一个过于急切的重命名检测案例:Git 认为 file3与丢失的文件匹配,因此它将更改导入到那里。

您可以禁用重命名检测:

-X no-renames

(即 git cherry-pick -X no-renames <em>hash</em> ,而不是 -X ours-X theirs )来避免这个问题。或者,使用 git cherry-pick -n这样 Git 就不会提交结果,然后通过 checkout HEAD 来修复编辑过的文件版本:

git cherry-pick -n <hash>

检查结果,进行任何所需的更改,包括:

git checkout HEAD -- folder/file3

最终:

git commit

进行新的提交。

关于git - 在不存在的文件中进行更改的 Cherry-pick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67936888/

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