我有一个库的git存储库和另一个项目的git存储库:
library/
project/
我需要将库复制到项目内的文件夹中:
project/ref/library/
在这个项目中,我将修改特定于该项目的库,因此使用子模块是不可行的。我还需要保留这个库的历史。
作为奖励,我还想知道如何将库的未来发展合并/改组为项目内部库的分支。
答案 0 :(得分:0)
我找到了基于this answer的问题的解决方案:
cd library/
mkdir -p ref/library/
git mv * ref/library # Remember to not include the ref/library itself
git commit -m "moved to ref/library"
cd ../project/
git remote add library-repo ../library
git fetch library-repo
git branch library-branch remotes/library/master
git merge library-branch --allow-unrelated-histories
git remote rm library-repo
一旦库上出现了新的东西,我就可以去图书馆并进行git fetch --rebase,然后重复这个过程。
答案 1 :(得分:0)
获得所需内容并仍然依赖于git子模块的一种方法是将您的库克隆为项目中的git子模块,然后在库中创建一个特定于项目的新分支。
这样,只要在分支上执行合并/ rebase,就可以从库中获得所有更改,您无需将提交推送回原始库,并且可以根据需要执行任意多项更改。分支以满足您的项目需求。
答案 2 :(得分:0)
我建议使用(在项目仓库内部)将库作为子模块添加到项目中:
git add submodule library.git ref/library
这样可以对ref / library中的更改进行编码,还可以决定何时接受ref / library中的更改。
submodule命令有一个foreach子命令,可以更容易地将新内容添加到子模块中。
git submodule foreach git pull || :
在每个子模块中运行git pull并在一个子模块中出现错误时继续,因为|| :
祝你好运!