Merge git repository in subdirectory

后端 未结 7 1319
有刺的猬
有刺的猬 2020-11-30 19:32

I\'d like to merge a remote git repository in my working git repository as a subdirectory of it. I\'d like the resulting repository to contain the merged history of the two

7条回答
  •  再見小時候
    2020-11-30 20:02

    git-subtree is a script designed for exactly this use case of merging multiple repositories into one while preserving history (and/or splitting history of subtrees, though that is seems to be irrelevant to this question). It is distributed as part of the git tree since release 1.7.11.

    To merge a repository at revision as subdirectory , use git subtree add as follows:

    git subtree add -P   
    

    git-subtree implements the subtree merge strategy in a more user friendly manner.

    The downside is that in the merged history the files are unprefixed (not in a subdirectory). Say you merge repository a into b. As a result git log a/f1 will show you all the changes (if any) except those in the merged history. You can do:

    git log --follow -- f1
    

    but that won't show the changes other then in the merged history.

    In other words, if you don't change a's files in repository b, then you need to specify --follow and an unprefixed path. If you change them in both repositories, then you have 2 commands, none of which shows all the changes.

    More on it here.

提交回复
热议问题