git checkout -b <name>与git branch <name>的区别及创建分支效果对比
嘿,这个问题问到点子上了,很多刚接触Git的朋友都会搞混这俩命令,我给你拆解明白:
1.
git checkout -b <name> 和 git branch <name> 的核心区别 这俩命令的核心差异在于是否自动切换到新分支:
git branch <name>:仅仅是创建新分支,操作完成后你仍然停留在当前正在工作的分支上。举个例子,假设你现在在main分支,执行这个命令后,新分支<name>确实创建成功了,但你的工作区还是main分支的内容,分支指针也没动。git checkout -b <name>:这是创建+切换二合一的快捷命令。它会先基于当前分支的最新提交创建名为<name>的新分支,然后立刻将你的工作区切换到这个新分支上。等效于连续执行git branch <name>+git checkout <name>这两个步骤。
2. 两种分支创建操作的效果是否完全一致?
如果只看新分支本身的创建结果,二者是一致的——都会基于你当前所在分支的最新提交,生成一个内容完全相同的新分支。但操作后的状态完全不同:
- 用
git branch develop创建分支后,你依然停留在原分支(比如main),工作区内容、当前分支指针都没有变化; - 用
git checkout -b dev创建分支后,你已经切换到dev分支,此时你的分支指针指向新创建的dev分支,虽然工作区内容和原分支暂时一致,但后续的提交都会归到dev分支上。
顺便提一句,Git 2.23版本之后推出了更直观的git switch -c <name>命令,功能和git checkout -b完全一样,是官方为了简化命令逻辑推出的替代写法,如果你觉得checkout功能太杂(它还能切换文件、恢复提交),可以试试这个新命令。
内容的提问来源于stack exchange,提问作者pain
相关产品推荐
相关产品推荐

