Github Desktop执行pull操作自动生成合并提交问题求解
GitHub Desktop拉取自动生成合并提交的解决方案
- 首先确认GitHub Desktop的配置优先级高于全局gitconfig,你设置的全局
pull.ff=only没有生效大概率是被软件内置配置覆盖了,优先调整软件设置:- 打开GitHub Desktop,Windows端点击顶部「文件」→「选项」,Mac端点击顶部「GitHub Desktop」→「设置」
- 切换到「Git」选项卡,找到拉取相关配置,勾选「始终在拉取时使用快进」,保存后重启GitHub Desktop
- 验证Git配置的多层级冲突:
打开对应仓库的终端,执行git config --list --show-origin,检查pull.ff配置的生效层级:- 如果只有全局(global)层级的
pull.ff=only,没有仓库本地(local)的配置,执行git config --local pull.ff only给当前仓库单独设置规则 - 如果有其他层级的配置覆盖了pull.ff的值,直接修改对应配置文件即可
- 如果只有全局(global)层级的
- 排查分支历史分叉问题:
无文件冲突不代表分支提交历史完全一致,执行以下两条命令检查本地和远程分支的提交差异:
如果输出有内容,说明两端存在互不包含的提交:git log --oneline HEAD..origin/[目标分支名] git log --oneline origin/[目标分支名]..HEAD- 优先推送本地未提交的变更到远程,再执行拉取
- 不需要保留本地提交的话可以执行
git rebase origin/[目标分支名],把本地提交变基到远程分支顶部,后续拉取就不会生成合并提交
- 配置兜底验证:
如果以上操作都无效,拉取前可以先执行git fetch,再执行git merge --ff-only origin/[目标分支名],快进失败会直接抛出错误而不会自动生成合并提交,你可以根据报错信息定位具体问题。
内容的提问来源于stack exchange,提问作者Geovane
相关产品推荐
相关产品推荐

