为什么我的develop分支每次git pull都要提交merge?该如何解决?
问题原因
你的Git配置中pull.rebase参数被设为false,这是Git的默认配置,该模式下如果本地分支存在还未推送到远端的提交,执行git pull时就会自动生成合并提交,也就是你看到的Merge branch 'develop' of github.com:repo into develop这类冗余记录。
解决方案
单次pull临时禁用merge提交
执行以下命令拉取代码即可:
git pull --rebase
该命令会先暂存你本地未推送的提交,拉取远端develop分支的最新代码后,再把你的本地提交按顺序接在最新提交的后面,全程不会生成额外的merge提交。
全局永久配置默认禁用pull生成merge提交
执行以下命令修改全局Git配置,之后所有仓库执行git pull都会默认使用rebase模式,无需每次加参数:
git config --global pull.rebase true
如果仅需要给当前仓库配置该规则,去掉命令中的--global参数即可。
注意事项
- 执行rebase过程中如果出现代码冲突,按照提示修改冲突文件后,执行
git add <冲突文件路径>,再执行git rebase --continue即可完成剩余的rebase操作。如果不需要继续本次rebase,执行git rebase --abort即可回退到操作前的状态。 - 已经生成的冗余merge提交如果还没有合并到主仓库,可以通过变基整理提交记录后,强制推送至你的PR对应的特性分支,即可清理PR中的冗余提交信息。
内容的提问来源于stack exchange,提问作者Timothy LeBon
相关产品推荐
相关产品推荐

