如何移除GitHub Pull Request中未修改文件的无关提交?
解决PR中包含无关提交的问题
别担心,这种因为分支创建基点选错导致的无关提交问题太常见了!我给你两个实用的解决方案,你可以根据自己的习惯来选:
方法一:交互式 Rebase(在现有分支上清理历史)
这个方法适合想直接在当前benefits-query分支上修改提交历史的情况:
- 先确保本地
master分支是最新的:git checkout master && git pull - 切回你的工作分支:
git checkout benefits-query - 执行交互式 rebase,把分支的基准点对齐到
master:
这时候会打开一个文本编辑器,里面列出了所有在git rebase -i mastermaster分支之后,你的benefits-query分支上的提交。 - 找到你自己的3个关于
tuition_benefit.json的提交(看提交信息很容易区分),把其他15个无关提交前面的pick改成drop(或者直接删掉那些提交的行)。 - 保存并退出编辑器,Git就会自动只保留你需要的3个提交了。
小贴士:如果过程中遇到冲突,解决冲突后执行
git add .,然后用git rebase --continue继续;要是想放弃操作,直接用git rebase --abort就能回到原来的状态。
方法二:Cherry-Pick 新建干净分支(更安全,不修改原有历史)
如果你怕修改现有分支历史出问题,这个方法更稳妥:
- 先拉取最新的
master分支:git checkout master && git pull - 新建一个干净的分支,比如叫
benefits-query-clean:git checkout -b benefits-query-clean - 查看提交历史,找到你那3个有效提交的哈希值:
从输出里找到对应git log --onelinetuition_benefit.json的3条记录,记下它们的短哈希(比如a1b2c3、d4e5f6、g7h8i9)。 - 把这3个提交“复制”到新分支上:
git cherry-pick a1b2c3 d4e5f6 g7h8i9 - 同样,如果遇到冲突,解决后执行
git add .,再用git cherry-pick --continue推进;放弃的话用git cherry-pick --abort。 - 最后用这个新分支去提交PR就好,原来的
benefits-query分支可以留作备份,或者直接删掉。
额外提醒
- 如果你的
benefits-query分支已经推送到远程仓库,用方法一修改历史后需要强制推送:
但注意:如果有其他同事也在使用这个分支,强制推送会覆盖他们的修改,这种情况下优先选方法二。git push -f origin benefits-query - 操作前建议先备份当前分支,比如:
万一操作失误,随时可以切回备份分支恢复。git branch benefits-query-backup
内容的提问来源于stack exchange,提问作者Cache Staheli
相关产品推荐
相关产品推荐

