跨仓库合并分支后Git无法Push的问题求助
解决Git推送时"只能推送自己的提交"问题
核心原因是你的分支历史里包含了同事的提交记录,远程仓库的预接收钩子拦截了这类提交。以下是无需关闭提交保护的解决办法:
方法一:修复已合并完成的分支(重写历史)
找到合并同事分支前,你自己分支的最后一个提交SHA
执行git log --oneline查看提交历史,定位到合并操作之前的那个提交(比如输出里的abc123 My last commit before merge)软重置到该提交
git reset --soft abc123此操作会保留当前工作区和暂存区的所有修改(包括你解决冲突后的内容),但将提交历史回退到合并前的状态。
重新提交所有修改
git commit -m "整合同事分支的修改内容"这个新提交的作者是你本人,提交历史里不会包含同事的提交记录。
强制推送分支
因为你重写了分支历史,需要用强制推送覆盖远程分支:git push --force origin my_branch注意:如果有其他协作者在这个分支上工作,提前沟通避免冲突。
方法二:正确的合并流程(避免后续再遇此问题)
下次合并同事分支时,使用squash合并,直接将同事的所有修改打包成你自己的提交:
切换到你的分支并拉取最新代码
git checkout my_branch git pull origin my_branch拉取同事分支的最新代码
git fetch forked_repo forked_branch执行squash合并
git merge --squash forked_repo/forked_branch此操作不会生成合并提交,而是将同事分支的所有修改添加到当前分支的暂存区。
解决冲突(如果有),然后提交
git add . git commit -m "整合同事分支的修改内容"正常推送即可
git push origin my_branch
内容的提问来源于stack exchange,提问作者Yeoman78
相关产品推荐
相关产品推荐

