交叉回购依赖的最佳实践

时间:2017-05-23 16:47:42

标签: git github version-control dependency-management

以下是一个场景:

  • Repo A是一个具有大量模块和依赖项的怪物代码。这不容易安装。它由其他人维护并托管在Github上。
  • Repo A包含一个非常有用的模块X,几乎不依赖于Repo A的其余部分
  • 我正在维护Repo B(托管在Github上),这个版本很小,我希望能够轻松分发。
  • 我想在Repo B中使用模块X的功能。

现在我可以将模块X复制到Repo B来实现这一目标。但是,如果Repo A的维护者对模块X进行了重要的错误修复,那么我就无法知道。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

假设模块X在RepoA的branchX中进行管理,并且您希望在RepoB的master分支中使用模块X的功能,并且还想知道模块X是否在RepoA中有更新。因此,您可以将RepoA远程添加到RepoB。详细步骤如下:

1.在RepoB的branchX分支中应用模块X(RepoA中的master):

# In local RepoB
git remote add repoA <URL for RepoA>
git checkout master
git pull repoA branchX --allow-unrelated-histories

注意:如果存在冲突,则需要修改并保存冲突文件并使用

git add .
git commit

2.检查branchX是否在RepoA中更新:

git fetch repoA branchX 

如果输出符合:

$ git fetch repoA branchX
From https://github.com/account/RepoA
 * branch            branchX          -> FETCH_HEAD

这意味着RepoA中的branchX(模块X)没有更新。

如果输出符合:

$ git fetch repoA branchX
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/account/RepoA
 * branch            branchX          -> FETCH_HEAD
   65cd100..6abbf6c  branchX          -> repoA/branchX

这意味着RepoA中的branchX(模块X)有更新,如果您要将branchX的更新应用到master分支,则可以使用

git checkout master  #If your current branch is not master
git pull repoA branchX