Rebase本地master后,无需强制推送与新分支,如何推送代码?
存在第三种解决方案:放弃变基,改用合并操作
当你已经对本地master执行了git rebase origin/master后,若不想强制推送也不想回溯到“一开始创建个人分支”的步骤,可以按以下操作处理:
第一步:找回变基前的本地master状态
用git reflog命令查看本地分支的操作历史,找到执行rebase之前的那条提交记录(类似abc123 HEAD@{n}: commit: 修复XXbug的条目),记下对应的提交哈希值。第二步:重置本地master到变基前的状态
执行命令:git reset --hard [刚才记下的提交哈希]
这会让本地master回到你完成bug修复提交、还没执行rebase的状态。第三步:合并远程master的最新变更
执行git pull origin master,Git会自动创建一个合并提交,将远程的新代码和你的bug修复提交整合到一起。如果合并过程中出现冲突,手动解决冲突后执行git commit完成合并。第四步:正常推送变更
执行git push origin master,此时本地分支的历史和远程分支是兼容的,不需要强制推送。
这种方式既不需要创建新分支,也不需要使用危险的强制推送,代价是会产生一个合并提交。如果团队允许合并提交的存在,这是完全可行的方案。
内容的提问来源于stack exchange,提问作者hrystynaKb
相关产品推荐
相关产品推荐

