Github 的项目怎么引用另一个项目?

例如项目A 和B,其中A 用到B,想直接在子目录中引用过去,这样在B 有push 的时候A 中的B 也会跟着更新。

阅读 28.4k
3 个回答

如果你的目标是子项目B提交后自动更新A,那是做不到的,除非自己做hook。
为避免submodule的,个人使用subtree。
基本流程如下:

  1. 使用git remote add 在A项目中添加子项目B的简称(可选)。
  2. 使用git subtree add 在A项目中首次添加目录引用。
  3. 子项目B提交后,在A项目中使用git subtree pull拉取子项目B项目中的更新。

另外,由于subtree的特点,“在子项目修改并pull入主项目”的时候会把所有的子项目commit全部合并进主项目中。如果对主项目历史有洁癖,或者为便于公共修改避免引入太多与主项目无关的commit历史,还可以参考以下流程:

  1. 在A项目中新建本地分支AS。
  2. 各种修改、提交子项目B。
  3. 从A项目的远程主分支中吧其他人的修改拉取到本地,并合并到分支AS中。(这一条还是特别提一下吧,因为我就犯过忘记合并他人更新的错误)
  4. 在分支AS中拉取子项目B的更新。
  5. 将分支AS合并到主分支,合并时需要使用--splash参数。

submodule 或者 subtree 应该可以满足

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏