You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨仓库合并分支后Git无法Push的问题求助

解决Git推送时"只能推送自己的提交"问题

核心原因是你的分支历史里包含了同事的提交记录,远程仓库的预接收钩子拦截了这类提交。以下是无需关闭提交保护的解决办法:

方法一:修复已合并完成的分支(重写历史)

  1. 找到合并同事分支前,你自己分支的最后一个提交SHA
    执行git log --oneline查看提交历史,定位到合并操作之前的那个提交(比如输出里的abc123 My last commit before merge)

  2. 软重置到该提交

    git reset --soft abc123
    

    此操作会保留当前工作区和暂存区的所有修改(包括你解决冲突后的内容),但将提交历史回退到合并前的状态。

  3. 重新提交所有修改

    git commit -m "整合同事分支的修改内容"
    

    这个新提交的作者是你本人,提交历史里不会包含同事的提交记录。

  4. 强制推送分支
    因为你重写了分支历史,需要用强制推送覆盖远程分支:

    git push --force origin my_branch
    

    注意:如果有其他协作者在这个分支上工作,提前沟通避免冲突。

方法二:正确的合并流程(避免后续再遇此问题)

下次合并同事分支时,使用squash合并,直接将同事的所有修改打包成你自己的提交:

  1. 切换到你的分支并拉取最新代码

    git checkout my_branch
    git pull origin my_branch
    
  2. 拉取同事分支的最新代码

    git fetch forked_repo forked_branch
    
  3. 执行squash合并

    git merge --squash forked_repo/forked_branch
    

    此操作不会生成合并提交,而是将同事分支的所有修改添加到当前分支的暂存区。

  4. 解决冲突(如果有),然后提交

    git add .
    git commit -m "整合同事分支的修改内容"
    
  5. 正常推送即可

    git push origin my_branch
    

内容的提问来源于stack exchange,提问作者Yeoman78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:27:11