git合并不同的存储库?

bal*_*loo 77 git git-svn

我一直在为我的所有项目使用SVN.有时项目B起源于项目A的副本.当项目A具有一般更改时,我可以svn merge A在目录B中使用它并合并这些更改.

现在,如果我想使用git.我不喜欢将我的所有项目放在同一个存储库中,因为我必须克隆所有项目,而不能像SVN那样选择一个项目.但是每个项目都有一个存储库,我如何像以前使用SVN一样进行相同操作?

问题是: 如果我想要几个真正与一个原始项目相关的子项目并使它们保持同步,那么构建它的最佳方法什么?而且我也希望能够单独检查它们

Oli*_*ier 135

如果你有两个项目,proj1并且proj2想要合并proj1into的更改proj2,你可以这样做:

# in proj2:
git remote add proj1 path/to/proj1
git fetch proj1
git merge proj1/master # or whichever branch you want to merge
Run Code Online (Sandbox Code Playgroud)

我相信这与你使用SVN做的事情是一样的.

  • @LeoHolanda你有点在这里.我必须用URL格式表示本地存储,例如file:///Users/abc/path/to/my/repo/.git (3认同)
  • 我建议在合并中使用 `--allow-unrelated-histories` 标志,以允许不共享共同祖先的合并历史记录(https://git-scm.com/docs/git-merge)。 (3认同)
  • 远程可以只是路径:`git remote add r1 ../r1`。不推荐`--allow-unrelated-histories`,它是[必需](https://github.com/git/git/blob/v2.26.2/Documentation/RelNotes/2.9.0.txt#L58-L65)从 `git >= 2.9` 开始合并来自不同存储库的分支。 (3认同)
  • @LeoHolanda 就 git 而言,本地文件算作远程文件。 (2认同)