我一直在使用SVN来管理我的所有项目。有时,项目B是从项目A复制而来的。
当项目A发生通用变化时,我可以在目录B中使用svn merge A
来合并这些变化。
现在,如果我想使用git。我不喜欢将所有项目都放在同一个仓库中,因为我随后必须克隆所有项目,无法像在SVN中那样选择一个项目。 但是,如果每个项目都有一个仓库,那么如何像之前在SVN中那样做呢?
问题是: 如果我想要几个子项目,这些子项目与一个原始项目相关联,并保持同步,同时也希望能够单独检出它们,最好的结构方式是什么?
我一直在使用SVN来管理我的所有项目。有时,项目B是从项目A复制而来的。
当项目A发生通用变化时,我可以在目录B中使用svn merge A
来合并这些变化。
现在,如果我想使用git。我不喜欢将所有项目都放在同一个仓库中,因为我随后必须克隆所有项目,无法像在SVN中那样选择一个项目。 但是,如果每个项目都有一个仓库,那么如何像之前在SVN中那样做呢?
问题是: 如果我想要几个子项目,这些子项目与一个原始项目相关联,并保持同步,同时也希望能够单独检出它们,最好的结构方式是什么?
如果你有两个项目,proj1
和proj2
,想要将proj1
的更改合并到proj2
中,你应该这样做:
# in proj2:
git remote add proj1 path/to/proj1
git fetch proj1
git merge proj1/master # or whichever branch you want to merge
我相信这与您使用SVN所做的事情是相同的。
--allow-unrelated-histories
标志,以允许合并两个没有共同祖先的提交历史(https://git-scm.com/docs/git-merge)。 - Dariusz Woźniakgit remote add r1 ../r1
。不建议使用 --allow-unrelated-histories
,自从 git >= 2.9
版本以来,合并来自不同仓库的分支需要该选项 必须。 - x-yuri