github sync fork conflicts

Posted by gebaocai on May 8, 2024

前言

在使用 GitHub 进行协作开发时,经常会遇到需要同步 fork 仓库与上游仓库(upstream)的情况。如果在同步过程中遇到冲突,但又不想发起pull request, 可以按照以下步骤解决:

解决步骤

1、 配置远程存储库

检查仓库是否有remote upstream repository

1
2
3
$ git remote -v
> origin  https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch)
> origin  https://github.com/YOUR-USERNAME/YOUR-FORK.git (push)

如果如上图没有remote upstream repository 就按如下命令配置下

1
2
git remote add upstream https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git

配置完就会如下图一样

1
2
3
4
5
$ git remote -v
> origin    https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch)
> origin    https://github.com/YOUR-USERNAME/YOUR-FORK.git (push)
> upstream  https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (fetch)
> upstream  https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (push)

2、 获取上游仓库的最新提交

1
git fetch upstream

3、 将上游仓库的master分支合并到你的本地master分支

1
2
git checkout master # 假设你的本地分支名为 master
git merge upstream/master

4、 解决冲突

如果在合并或变基过程中遇到冲突,Git 会暂停并告诉你哪些文件有冲突。你需要手动解决这些冲突。打开冲突的文件,你会看到类似以下的标记:

1
2
3
4
5
<<<<<<< HEAD
// 你的分支上的代码
=======
// 上游仓库的代码
>>>>>>> upstream/master

你需要编辑这些文件,删除这些标记,并决定保留哪些代码。解决冲突后,保存文件并退出编辑器。

提交信息并推送至远程仓库

1
2
git commit -m 'resolve conflicts'
git push origin master