Git分支PR异常:分支2拉取请求含分支1变更如何解决?
解决Git分支PR包含无关变更的问题
问题根源
你创建branch2的时候,本地当前分支是已经提交了file1变更的branch1,而非仓库的主分支(比如main/master)。这导致branch2直接继承了branch1的所有提交,所以发起PR时会同时带上两个文件的变更。
修复现有branch2的两种方法
方法一:新建干净分支+Cherry-pick
- 切回主分支并拉取最新代码:
git checkout main git pull origin main - 基于最新主分支创建干净的新分支:
git checkout -b branch2-new - 将原
branch2中仅针对file2.json的提交移到新分支:
(提交哈希可通过git cherry-pick <原branch2中"update file2.json"提交的哈希值>git log branch2查看,找到对应提交的一串字符即可) - 推送新分支到远程:
git push -u origin branch2-new - 弃用原
branch2,用新分支发起PR即可。
方法二:原分支变基(仅适用于无人共用该分支的场景)
- 切换到
branch2:git checkout branch2 - 基于主分支变基,将分支起点移到主分支最新提交上:
若出现冲突,仅保留git rebase mainfile2.json的修改即可,无关冲突直接丢弃。 - 强制推送到远程:
注意:如果有其他同事也在使用该分支,禁止使用此方法,会破坏他人的本地分支同步。git push -f origin branch2
避免后续踩坑的正确分支创建流程
每次新建任务分支前,务必先切回主分支并拉取最新代码:
# 切回主分支 git checkout main # 拉取远程最新代码,保证本地与远程同步 git pull origin main # 基于最新主分支创建独立任务分支 git checkout -b branch2 # 正常修改file2.json并提交推送 git add file2.json git commit -m 'update file2.json' git push -u origin branch2
这样创建的分支只会包含主分支的基础代码+你对file2.json的变更,PR时就不会混入无关内容了。
内容的提问来源于stack exchange,提问作者Brian Mo
相关产品推荐
相关产品推荐

