zyp*_*510 3 git git-subtree monorepo
有时我在 GitHub 上发现monorepo由多个 npm 包组成,我想对其进行一些修改并在我的项目中使用它。但是 npm 从 git 子目录安装包比从 git 存储库安装要困难得多[ 1 ][ 2 ]。由于我会自己进行修改,所以我想知道如何设置自己的 git 存储库,以便 npm 可以轻松安装,并且可以合并上游更改。
目前,我使用GitHub 上的本指南将包与 monorepo 的其余部分分开,即
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME
Run Code Online (Sandbox Code Playgroud)
Npm 可以轻松安装存储库,但我发现很难合并任何上游更改。
以前有人这样做过吗?任何想法?
实际上,我认为我错过了一些东西 - 合并上游更改并不像我想象的那么难,因为 git subtree split 是确定性的,即它会为相同的子树拆分生成相同的 SHA1,无论该过程重复多少次。
所以这是我的解决方案:
将默认分支(master)重命名为其他名称,例如上游
git checkout master
git branch -m upstream
Run Code Online (Sandbox Code Playgroud)从 monorepo 中拆分子目录
git checkout upstream
git subtree split -P <subdirectory path> -b master
Run Code Online (Sandbox Code Playgroud)
现在我们有一个主分支,其中仅包含与子目录路径相关的提交。
(可选)设置 master 分支的远程并将其推送到 GitHub。
现在,如果上游 monorepo 添加了一些更改:
检查上游分支并拉取更改
git checkout upstream
git pull
Run Code Online (Sandbox Code Playgroud)再次分裂
git subtree split -P <subdirectory path> -b upstream-patch
Run Code Online (Sandbox Code Playgroud)
检查修订图,您将看到新分支(upstream-patch)与master相关。
gitk master upstream-patch
Run Code Online (Sandbox Code Playgroud)现在只需将新分支合并到master
git checkout master
git merge upstream-patch
Run Code Online (Sandbox Code Playgroud)
手动解决任何合并冲突。
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |