将GitHub仓库Fork至Azure DevOps并保留上游更新拉取能力是否可行?
当然可行!你完全可以实现这个需求——把GitHub仓库迁移到Azure DevOps,同时保留和上游GitHub仓库的同步能力,体验上和GitHub内部的Fork机制几乎一致。下面我给你一步步拆解操作方法,还有一些需要注意的细节:
操作步骤
第一步:在Azure DevOps创建空仓库
先在Azure DevOps里新建一个空白仓库,别勾选"添加README"或者.gitignore这些选项,保持完全空的状态,这样后续拉取上游代码不会有冲突。第二步:本地关联并同步上游代码
把刚创建的Azure DevOps仓库克隆到本地,然后在本地仓库里添加GitHub上游仓库的远程源:git remote add upstream <GitHub仓库的HTTPS/SSH地址>接着拉取上游仓库的所有代码和分支(把
main换成你上游仓库的默认分支,比如master):git pull upstream main --allow-unrelated-histories最后把同步好的代码推回Azure DevOps仓库:
git push origin main第三步:设置自动同步(可选但推荐)
要是不想每次手动拉取上游变更,可以在Azure DevOps里配置一个管道来自动同步:- 新建一个YAML管道,选择你的Azure DevOps仓库作为源。
- 使用下面的YAML脚本,设置定期触发(比如每天凌晨同步一次):
trigger: none schedules: - cron: "0 0 * * *" displayName: 每日同步上游GitHub仓库 branches: include: - main always: true pool: vmImage: 'ubuntu-latest' steps: - script: | git remote add upstream <GitHub仓库地址> git fetch upstream git checkout main git merge upstream/main --no-edit git push origin main displayName: '同步上游GitHub仓库变更'
注意:如果上游GitHub仓库是私有的,得给管道配置GitHub的个人访问令牌(PAT)来获取访问权限,同时确保Azure DevOps的服务账号有仓库推送权限。
和GitHub原生Fork的异同
GitHub的原生Fork会自动在界面上显示上游仓库的关联,还提供一键拉取变更的按钮;而Azure DevOps目前没有直接"Fork GitHub仓库"的一键功能,需要我们手动配置远程源和同步管道,但核心的上游同步功能完全能满足你的需求,用起来差别不大。
关于产品路线图
目前Azure DevOps的公开规划里,还没有明确宣布要推出直接Fork GitHub仓库并自动关联上游的功能。不过你可以去Azure DevOps的反馈平台提交这个需求,官方会根据用户需求的优先级来考虑是否加入后续的开发计划。
内容的提问来源于stack exchange,提问作者andylockran

