应用场景是想偷懒把多个项目已经建好的仓库合并,用一个 git 仓库来管理,
举例来说,原项目 1 的仓库在文件夹 repo1 ,原项目 2 在文件夹 repo2...,项目之间没有依赖关系。现在新建一个新文件夹 repo ,然后将 repo1 和 repo2 都作为子文件夹放到 repo 中。但是如何把项目 1 和项目 2 的历史提交记录合并到一起呢?
1
ihaoz Jun 29, 2022
|
2
noe132 Jun 29, 2022 via Android
repo1 添加 repo2 为 remote ,然后 merge 进来就行了。
|
3
FengMubai Jun 29, 2022
|
4
fpure Jun 29, 2022
也把 objects 目录拷进来,然后建分支就可以了
|
5
Oktfolio Jun 29, 2022
git merge <branch> --allow-unrelated-histories
|
6
xtinput Jun 29, 2022
git submodule
|
7
dayeye2006199 Jun 29, 2022 via Android
别用 submodule ,难用反直觉
|
8
sillydaddy OP |
9
sillydaddy OP @sillydaddy
参考的是 https://stackoverflow.com/questions/13040958/merge-two-git-repositories-without-breaking-file-history 另外 @xtinput @dayeye2006199 submodule 确实也是一个方案,还没试过。 |
10
Inf1nity Jun 29, 2022
楼上说的很对,git submodule 的设计很反直觉,简而言之就是非常烂,如果有替代方案的话不建议使用。
|
11
leo108 Jun 29, 2022
git subtree
|
12
linkopeneyes Jun 29, 2022
如果是前端项目 只是把所有库放一个仓库 monorepo 比如 pnpm 或者 lerna
|
13
duke807 Jun 29, 2022 via Android
|
14
sillydaddy OP @sjhhjx0122
谢谢,我看看。 |
15
alexsunxl Jun 30, 2022
@dayeye2006199
@Inf1nity @duke807 说 submodule 难用可以。api 没那么方便也是。 但改用的情况你也得用上呀。 比如依赖他人的内部项目,不用 submodule 用啥。 直接拷贝过来,不得更新麻烦的吗?有些场景肯定用 submodule 方便呀 这种内部的仓库又不是公开发布的包, 用包管理器就能更新 |
16
Inf1nity Jun 30, 2022
@alexsunxl #14 如果是本项目内部依赖别的项目 /仓库的话,子模块确实就是干这件事的最佳方案,但是楼主这里的前提是项目之间没有依赖关系,而且还要合并历史记录,这就有点复杂了,子模块不太能胜任这种场景。
|
17
hpu423 Jul 8, 2022
https://cheatsheet.wang/ 看看里面的 submodule ,subtree 都可以满足,主要是滴耦合
|