gpt4 book ai didi

git - 将更改从一个存储库 merge 到另一个具有不同树结构的存储库

转载 作者:IT王子 更新时间:2023-10-29 00:48:38 26 4
gpt4 key购买 nike

我有两个 Git 仓库,foo/master 和 bar/master:

在 foo 中:

code_root
->dirA
->dirB
-> *some files*

在栏中:

code_root
-> *same files as above*

现在有人更改了*一些文件*...我如何将这些更改 merge 到*与上面相同的文件*

当我说“merge ”时,我的意思是我还需要增量的历史记录(提交消息、日志哈希等)。

最佳答案

您可以将更改拆分到子树级别,然后与您的其他分支 merge :

# from your foo project
git subtree split --prefix=dirA/dirB/ --branch=temp-branch [--onto=<onto-sub-note1>] [<commit-sub-note2>]

到子注释 1:看来既然 bar 项目存在,您一定是在某个时间点复制了它,并将其作为新项目启动库,在这种情况下,如果您希望在此之后进行所有更改,您将在引入更改时指定此 bar 提交 ID。

commit sub-note 2:然后您需要指定最初复制子项目时使用的 commit id,这样您就只能获得此后的更改 merge 到您已有的 bar 副本中(这将保留您错过的历史记录)。使用这样的语法来包含最新的提交 ID 本身:0abc210^..

您还可以使用 --rejoin 将提交返回到您的 foo 项目中,如果您想继续开发,这将使以后更容易推送更改在 bar 上从您的 foo 项目。提交回 foo 有点毫无意义,只是为了帮助子树命令基础,它被拆分为将来更容易更改。

运行 split 命令后,您将进入 foo 的一个分支,其中只有那些文件。从那里您可以与您的 bar 项目进行正常 merge ,或者开始一个新项目并将 bar merge 到该项目中(因为它可能没有正确的历史记录)。不过,在尝试进行 merge 之前,您可能希望重新定位到 fork 点或其他东西。

编辑:这里还有 reference for git subtree commands

关于git - 将更改从一个存储库 merge 到另一个具有不同树结构的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158703/

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