Git提交推送至团队仓库遇提交历史完全不同错误,如何解决?
解决提交推送至团队仓库的历史冲突问题
问题原因
你的本地nb分支与fork仓库的main分支提交历史完全独立无关联,Git出于数据安全拒绝推送;本地出现团队仓库的提交历史,大概率是误将原团队仓库的代码合并到了本地,或是远程仓库配置出现混淆。
解决步骤
1. 确认并修正远程仓库配置
先查看当前远程仓库关联:
git remote -v
确保存在两个远程:
upstream:指向原团队的GitHub仓库(若没有则添加)pjt:指向你自己的fork仓库
若缺失upstream,执行以下命令添加:
git remote add upstream [原团队仓库的SSH/HTTPS地址]
2. 同步本地与远程的主分支
切换到本地main分支,拉取原团队仓库的最新代码:
git checkout main git pull upstream main
再将同步后的代码推送到自己的fork仓库,保证三方主分支一致:
git push pjt main
3. 重建或修复nb分支
方式一:保留原有修改(推荐)
- 切换到有问题的
nb分支,通过git log记录需要保留的提交哈希值 - 回到同步后的
main分支,新建干净分支:
git checkout main git checkout -b new_nb
- 将原
nb分支的提交逐一复制到新分支:
git cherry-pick [原nb分支的第一个提交哈希] git cherry-pick [原nb分支的第二个提交哈希] # 依此类推复制所有需要的提交
- 若原
nb分支不再需要,可删除并重命名新分支:
git branch -D nb git branch -m new_nb nb
方式二:重新创建分支(适合修改不多的情况)
直接删除有问题的nb分支,基于最新main分支重建:
git branch -D nb git checkout main git checkout -b nb
之后重新添加修改并提交。
4. 推送分支到自己的fork仓库
在修复后的nb分支完成提交后,执行推送命令:
git push -u pjt nb
5. 发起Pull Request合并到团队仓库
登录GitHub,进入自己的fork仓库,找到nb分支,点击"Compare & pull request"按钮,向原团队仓库的main分支发起合并请求,等待团队负责人审核合并即可。
内容的提问来源于stack exchange,提问作者Park soyoung
相关产品推荐
相关产品推荐

