You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于同主仓库的他人Fork分支在自有Fork创建新分支?

问题

我有一个使用已久的Fork仓库:udance4ever/batocera.linux,希望基于另一位开发者Fork仓库的bryanforbes/macos-build分支,在自己的Fork中创建名为“Apple-build”的分支。两个Fork都源自同一主仓库batocera-linux/batocera.linux。我知道可以创建“Fork的Fork”,但后续合并变更回原自有Fork会有麻烦(近期不会向主分支提交合并),也欢迎其他可行工作流方案。

已尝试的操作

参考某个Stack Overflow方案执行了以下命令:

git fetch https://github.com/bryanforbes/batocera.linux.git bryanforbes/macos-build

该命令成功拉取数据,输出如下:

remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 48 (delta 24), reused 41 (delta 22), pack-reused 1 (from 1)
Unpacking objects: 100% (48/48), 26.15 KiB | 704.00 KiB/s, done.
From https://github.com/bryanforbes/batocera.linux
 * branch                    bryanforbes/macos-build -> FETCH_HEAD
Fetching submodule buildroot
From https://github.com/batocera-linux/buildroot
   ce59a3e8ce..015766e5a6  br2-external -> origin/br2-external
From https://github.com/batocera-linux/buildroot
 * branch                  c5e38d806a062cd40ccc5c0f000370d9f3c65879 -> FETCH_HEAD

但执行以下命令时出错:

git merge --allow-unrelated-histories bryanforbes/macos-build

错误信息:

merge: bryanforbes/macos-build - not something we can merge

同时无法切换到该分支:

$ git checkout bryanforbes/macos-build
error: pathspec 'bryanforbes/macos-build' did not match any file(s) known to git

我希望将该分支导入自有仓库,以便合并提交到集成分支开展后续工作。

解决方案

方法一:直接从FETCH_HEAD创建本地分支

你用git fetch拉取的分支只会存到临时的FETCH_HEAD里,没有在本地创建对应的分支引用,所以没法直接用分支名操作。可以直接基于拉取的内容创建你的目标分支:

# 基于FETCH_HEAD创建本地Apple-build分支
git checkout -b Apple-build FETCH_HEAD
# 将本地分支推送到自己的Fork仓库
git push origin Apple-build

方法二:添加远程仓库并拉取分支

如果后续还需要同步该开发者的分支更新,建议先添加他的仓库作为远程源:

# 添加远程源,命名为bryanforbes(可自定义)
git remote add bryanforbes https://github.com/bryanforbes/batocera.linux.git
# 拉取他的macos-build分支到本地
git fetch bryanforbes bryanforbes/macos-build
# 创建本地Apple-build分支并关联该远程分支
git checkout -b Apple-build bryanforbes/bryanforbes/macos-build
# 推送到自己的Fork
git push origin Apple-build

后续如果他的分支有更新,直接执行git fetch bryanforbes,再合并到你的Apple-build分支即可。

替代工作流建议

如果不想处理复杂的远程分支同步,也可以:

  • 直接在GitHub网页上操作:打开bryanforbes的仓库,切换到macos-build分支,点击「Fork」创建自己的二次Fork,然后在这个二次Fork里创建Apple-build分支,后续可以通过PR把变更合并回原Fork。不过这种方式确实会多一个仓库,适合偶尔同步的场景。
  • 或者将bryanforbes的分支作为补丁导入:用git format-patch生成补丁文件,再在自己的仓库里应用,适合仅需要一次性获取变更的情况。

内容的提问来源于stack exchange,提问作者udance4ever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:28:17