及时了解其他项目的子树

时间:2017-06-20 12:40:19

标签: git git-merge git-subtree

在我的项目中,我使用的是在/ Libs文件夹中分组的几个库(相对于项目树的根目录)。我想在我的项目中使用一个库。但是我不想导入整个库的回购,因为它包含很多不必要的东西 - 文档,示例,工具等。我想只导入一个&s; src'夹。更重要的是:我想使用子树,而不是subrepo。

我做了什么(其中a_lib是我想要使用的库的名称):

git remote add a_lib https://github.com/xxx/a_lib.git
git fetch a_lib
git checkout -b dependencies/a_lib a_lib/master
git subtree split --prefix=src --annotate="[a_lib] " --rejoin -b subtrees/a_lib
git checkout master
git subtree add --prefix=Libs/a_lib --squash subtrees/a_lib

到目前为止一切顺利。通过这些命令,我​​拉出了a_lib源代码,提取了“src'目录从库源树到单独的分支。最后我添加了图书馆的' src'文件夹作为我的主项目的Libs / a_lib目录。

由于我将库导入到我的项目中,因此库已更新。我想提取新的更改并将它们与我在库代码中完成的更改合并。

我尝试了这些命令(在其他计算机上执行这些命令,所以重复一些步骤)

git remote add a_lib https://github.com/xxx/a_lib.git
git fetch a_lib
git checkout -b dependencies/a_lib a_lib/master
git subtree split --prefix=src --annotate="[a_lib] " --rejoin -b subtrees/a_lib
git checkout master
git subtree merge --prefix=Libs/STM32generic --squash subtrees/stm32generic

最后一个命令失败并显示此输出

fatal: ambiguous argument '62d6171eb30af14351671c483f4e0a233df24e20^0': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
could not rev-parse split hash 62d6171eb30af14351671c483f4e0a233df24e20 from commit 66375945cbe689c6864d3a0adba53bdbe0c0f86c
Can't squash-merge: 'Libs/a_lib' was never added.

我对git很新,所以我无法想象自己这里有什么问题。任何人都可以帮我合并库更改吗?

0 个答案:

没有答案