如何优化git commit与push工作流,避免推送冲突与混乱提交记录?
优化单分支线性提交历史的工作流方案
你不需要更换当前使用的Sublime Merge工具,该工具已经完全支持你需要的线性提交历史相关操作,核心优化逻辑是用**变基(rebase)**模式拉取远程更新,替代普通的merge模式拉取,既不会生成无效的merge commit,也不需要反复克隆仓库手动迁移改动。
核心原理
变基操作会先将你本地未推送的提交临时暂存,把本地分支更新到和远程master完全一致的最新状态,再将你暂存的本地提交逐个追加到最新提交的后方,最终得到的提交历史和你手动克隆最新仓库、重新改动后提交的效果完全一致,全程保持线性无多余合并记录。
命令行操作步骤(可选)
- 本地所有改动提交完成后,执行拉取命令:
git pull --rebase origin master - 如果出现文件冲突,按提示修改所有冲突内容,修改完成后执行
git add <冲突文件路径>,再执行git rebase --continue即可继续变基流程;如果想终止本次操作回到初始状态,执行git rebase --abort - 变基完成无报错后,直接执行
git push origin master即可成功推送
Sublime Merge 可视化操作步骤
- 本地所有改动提交完成后,点击顶部「拉取」按钮旁的下拉箭头,选择 拉取(变基) 选项
- 若出现冲突,工具会自动高亮所有冲突文件,你可以直接在工具内修改冲突,也可以用其他编辑器修改完成后,在冲突文件上右键选择「标记为已解决」
- 所有冲突处理完成后,点击工具提示栏的「继续变基」,等待变基流程结束后直接点击推送按钮即可
额外优化建议
- 可以设置全局默认拉取使用变基模式,避免每次手动选择,执行命令:
git config --global pull.rebase true,设置完成后命令行、Sublime Merge的默认拉取操作都会自动使用变基模式,不会生成多余merge commit - 可以建议团队所有成员都开启pull rebase默认配置,整个项目的提交历史都会长期保持干净的线性状态,不会再出现无实际变更的无效merge commit
内容的提问来源于stack exchange,提问作者KcFnMi
相关产品推荐
相关产品推荐

