Git Pull Request冲突求助:如何同步主仓库变更?
嘿,我完全懂你现在的挫败感——作为Git新手,刚上手就遇到冲突,还执行了一堆命令都显示“Already up-to-date”但问题没解决,确实挺懵的。让我帮你拆解问题,一步步搞定它。
问题出在哪?
你之前执行的git pull、git merge origin/master都是在自己的master分支上操作的,但你提交PR的是另一个feature分支(就是你修改代码的那个分支)。主仓库的最新变更可能已经同步到了你自己的master分支,但你的feature分支还停留在旧版本,所以和主仓库的最新代码产生了冲突。
具体解决步骤
以下是详细的操作流程,跟着做就行:
首先切换到你用来提交PR的feature分支(比如你的分支叫
my-feature-branch):git checkout my-feature-branch不确定当前分支的话,用
git branch查看,带星号的就是当前分支。如果还没把主仓库添加为远程仓库,先添加(命名为
upstream,方便区分自己的fork):git remote add upstream https://github.com/主仓库的完整地址.git已经添加过的话,用
git remote -v确认一下,能看到upstream的地址就跳过这步。拉取主仓库master分支的最新代码到你的feature分支:
git pull upstream master这时候Git会提示你有冲突,列出冲突的文件。
手动解决冲突:
打开冲突的文件,你会看到类似这样的标记:<<<<<<< HEAD 你自己修改的代码内容 ======= 主仓库最新的代码内容 >>>>>>> upstream/master仔细对比两边的代码,保留需要的部分,然后删除这些标记符号。
冲突解决完后,暂存修改的文件:
git add .提交冲突解决的结果:
git commit -m "Resolve conflicts with upstream master branch"最后把更新后的feature分支推送到你的fork仓库:
git push origin my-feature-branch
做完这些,你的Pull Request就会自动更新,主仓库那边的冲突应该就消失了。
额外提醒
以后再修改代码前,最好先同步主仓库的最新代码到你的feature分支,这样能减少冲突的概率。流程大概是:切换到feature分支 → git pull upstream master → 再开始修改代码。
内容的提问来源于stack exchange,提问作者Poe Eain

