我有两个 Git 存储库,foo/master 和 bar/master:
In foo:
code_root
->dirA
->dirB
-> *some files*
In bar:
code_root
-> *same files as above*
现在有人做出了改变*some files*
...我如何将这些更改合并到*same files as above*
?
当我说“合并”时,我的意思是我还需要增量的历史记录(提交消息、日志哈希等)。
您可以将更改拆分到子树级别,然后与其他分支合并:
# from your foo project
git subtree split --prefix=dirA/dirB/ --branch=temp-branch [--onto=<onto-sub-note1>] [<commit-sub-note2>]
到小注释 1: 好像是从那时起bar项目根本存在,您必须在某个时间点复制它,并将其作为新库启动,在这种情况下,如果您希望此后进行所有更改,您可以指定此bar引入更改时的提交 ID。
提交子注释 2:然后,您需要指定首先复制子项目时使用的提交 ID,以便您只能获取此后的更改以合并到bar您已经拥有了(这将保留您错过的历史记录)。使用这样的语法来包含最新的提交 ID 本身:0abc210^..
您还可以使用--rejoin
重新提交到你的foo项目,如果您想继续开发,这将使以后更容易推送更改bar从你的内心foo项目。提交回foo除了帮助子树命令库将来更容易更改分割之外,这有点毫无意义。
运行 split 命令后,您将进入一个分支foo,其中只有这些文件。从那里你可以与你的进行正常合并bar项目或开始一个新项目并合并bar对此(因为它可能没有正确的历史)。不过,在尝试进行合并之前,您可能需要重新定位到分歧点或其他位置。
编辑:这也是git 子树命令参考 https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)