gpt4 book ai didi

git - 如何 fork monorepo 的一部分并仍然能够 merge 上游提交?

转载 作者:行者123 更新时间:2023-12-02 03:32:33 25 4
gpt4 key购买 nike

有时我会找到 monorepo GitHub 上有多个 npm 包,我想对其进行一些修改并在我的项目中使用。但是 npm 从 git 子目录安装包比从 git 存储库安装包要难得多[ 1 ][ 2 ]。由于我会自己进行修改,我想知道如何设置自己的 git 存储库,以便 npm 易于安装,并便于我 merge 上游更改。

目前,我使用 this guide从 GitHub 将包从 monorepo 的其余部分拆分出来,即

git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME  BRANCH-NAME 

Npm 可以轻松安装 repo,但我发现很难 merge 任何上游更改。

有人做过吗?有什么想法吗?

最佳答案

实际上,我想我错过了一些东西 - merge 上游更改并不像我想象的那么难,因为 git subtree split 是确定性的,即无论该过程重复多少次,它都会为相同的子树拆分生成相同的 SHA1。


所以这是我的解决方案:

  1. 克隆单体库
  2. 将默认分支 (master) 重命名为其他名称,例如上游

    git checkout master
    git branch -m upstream
  3. 从monorepo中拆分子目录

    git checkout upstream
    git subtree split -P <subdirectory path> -b master

    现在我们有一个主分支,其中只有与子目录路径相关的提交。

  4. (可选)设置master分支的远程并推送到GitHub。

现在如果上游 monorepo 添加了一些更改:

  1. 检查上游分支并 pull 更改

    git checkout upstream
    git pull
  2. 再次 split

    git subtree split -P <subdirectory path> -b upstream-patch

    查看修订图,您会看到新分支(upstream-patch)与master相关。

    gitk master upstream-patch
  3. 现在只需将新分支 merge 到master

    git checkout master
    git merge upstream-patch

    手动解决任何 merge 冲突。

  4. (可选) git push

关于git - 如何 fork monorepo 的一部分并仍然能够 merge 上游提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51414772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com