验证同步GitHub与Azure DevOps分支的Git操作步骤是否合理
一个月前我照着微软官方导入文档,把GitHub上的公开仓库直接克隆到新建的私有Azure DevOps(ADO)仓库,打算基于这个开源软件做定制开发、修改参数文件。初始导入完成后,我把ADO仓库克隆到本地,基于main分支建了DEV分支,提交了2个新增的YAML参数文件和2个更新文件,然后推送到了ADO。这期间GitHub的主分支又新增了4次提交,我得把这些更新同步到ADO的main和DEV分支,而且以后还要持续同步GitHub的新提交。我查了Git文档,但拿不准下面的操作步骤合不合理、有没有问题:
git fetch github git switch main git rebase github/main git push -u origin main git switch DEV git rebase github/main git push -u origin DEV
main分支的操作没问题:先fetch拉取GitHub仓库的最新代码,切换到main分支后用rebase把GitHub的新提交合并到本地main,再推送到ADO的main分支就行。要是ADO的main分支自从你上次推送后没人改过,rebase完直接
git push就行,-u是设置上游分支,第一次同步后后续可以不用加这个参数。DEV分支的rebase要留意冲突:你的DEV分支有自己的定制修改,rebase github/main的时候很大概率会碰到冲突,必须手动解决冲突后执行
git rebase --continue,直到整个rebase流程走完。另外,rebase会改写DEV分支的提交历史,要是这个DEV分支还有其他开发者在用,一定要提前跟他们说清楚,不然其他人的本地分支会和远程分支对不上。如果只有你自己用这个DEV分支,那这个操作就没毛病。持续同步的小提醒:以后每次同步都可以重复这个流程,但要注意两点:
- 同步前先确保本地工作区干净,没有未提交的修改。要是有临时改动,可以用
git stash暂存起来,同步完再用git stash pop恢复。 - 要是ADO的main分支有其他人提交的代码,别用rebase,改用
git merge github/main,不然会改写公共分支的提交历史,容易出问题。
- 同步前先确保本地工作区干净,没有未提交的修改。要是有临时改动,可以用
内容的提问来源于stack exchange,提问作者sehor

