【问题标题】:git cherry picking to a different base directorygit cherry 挑选到不同的基本目录
【发布时间】:2017-04-04 23:01:03
【问题描述】:

我在一个分支 10.57 中有某些提交,我想将其合并到另一个分支 10.58。

我通常会从 10.57 到 10.58 挑选那些提交。

但是有一个小故障。某些文件在 10.58 中更改了它们的目录结构。

示例:10.57 中的源目录MAAS/ios-web-services 已移至10.58 中的MAAS/apple/ios-web-services

如果我像以前一样挑选,我的更改会在MAAS/ios-web-services 中重新创建为新文件/目录,而不是合并到MAAS/apple/ios-web-services 中的文件中。

有没有办法让 git 考虑到目录结构的这种变化?

Git cherry pick files, from Directory A to Directory B 似乎建议编辑补丁并手动应用它们。没有其他更简单的方法吗?

【问题讨论】:

标签: git git-merge git-cherry-pick


【解决方案1】:

如果文件只有很小的更改,您可以尝试使用merge.renameLimit,如此处合并分支所述:How to merge two branches with different directory hierarchies in git?

【讨论】:

    【解决方案2】:
    1. 在 10.58 上,创建与 10.57 相同的目录结构 mkdir -p MAAS/ios-web-services
    2. 将文件从旧位置移动到新创建的位置 mv MAAS/apple/ios-web-services/* MAAS/ios-web-services/
    3. 提交这些更改 git 添加 MAAS/ios-web-services git commit -a
    4. 现在樱桃选择从 10.57 到 10.58 的变化
    5. 与第 2 步相反,即将文件从新位置移动到旧位置
    6. 反向 step1 即删除目录结构
    7. 提交这些更改。
    8. 现在您有 3 次提交,第一次在第 3 步,第二次在第 4 步,第三次在第 7 步。使用 git rebase -i HEAD~3 合并所有 3 次提交

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多