You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git中先提交再切分支与先切分支再提交是否存在差异?

Git操作流程差异对比

这个问题问得很到位!咱们来把这两个操作流程在Git层面的核心差异掰扯清楚:

核心差异概述

这两个流程最关键的区别体现在develop分支的最终状态和新分支的提交基础上:

  • 流程一结束后,你的develop分支会包含刚提交的修改;流程二结束后,develop分支完全没变化,修改只存在于新分支fix/new_branch中。
  • 流程一的新分支是基于已包含新提交的develop创建的;流程二的新分支则是基于未提交修改的原始develop创建的。

分步拆解每个流程的Git内部变化

流程一:先在develop提交,再切分支推送

  1. git add somefiles:在当前develop分支下,把修改的文件加入暂存区。
  2. git commit:在develop分支生成一个新的提交(假设哈希值为abc123),此时develop的HEAD指针会指向这个新提交。
  3. git checkout -b fix/new_branch:基于develop当前的HEAD(也就是abc123)创建并切换到fix/new_branch,此时这个新分支和develop指向同一个提交节点。
  4. git push origin fix/new_branch:把新分支同步到远程仓库。

最终状态:本地的develop和fix/new_branch都包含这个新提交,远程仓库的fix/new_branch也同步了该提交。

流程二:先切新分支,再提交推送

  1. git checkout -b fix/new_branch:基于develop当前的原始状态(未提交修改的那个提交,假设哈希值为def456)创建并切换到fix/new_branch。
  2. git add somefiles:在新分支下暂存修改的文件。
  3. git commit:在fix/new_branch上生成新提交ghi789,此时新分支的HEAD指向ghi789,但develop的HEAD仍然停留在def456。
  4. git push origin fix/new_branch:把新分支同步到远程仓库。

最终状态:只有本地和远程的fix/new_branch包含这个新提交,develop分支和操作前完全一致。

后续影响的场景举例

比如之后你要把fix/new_branch合并回develop:

  • 流程一的情况:因为develop已经有这个提交了,合并操作基本是“无事可做”的快速合并,不会产生新的合并记录。
  • 流程二的情况:你需要把fix/new_branch上的提交合并到develop,这会触发常规的合并操作(默认会生成合并提交,或者你可以选择变基)。

内容的提问来源于stack exchange,提问作者Jed Cua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:34:13