为何文章作者从develop分支创建feature分支用checkout而非fetch?
关于Git分支模型的两个疑问解答
1. 从本地develop创建feature分支会不会用到过时代码?
会的。如果你的本地develop分支没同步远程仓库的最新提交,直接基于它创建feature分支,新分支的起点就是过时的。后续把feature合并回develop时,大概率会因为远程develop已有其他人的新提交而产生冲突。
那个经典的Git分支模型里,其实默认你在开feature分支前,已经完成了同步远程develop到本地的操作:先执行git fetch origin develop,切换到本地develop分支后再git pull origin develop,确保本地代码和远程完全一致,再去创建feature分支。跳过这步的话,确实会用到过时分支。
2. 合并推送时用checkout不用fetch的原因?
作者的操作里没提fetch,不是不需要,而是fetch属于前置同步步骤,被模型默认成了你已经完成的基础操作。
具体来说,把本地feature合并到develop并推送的完整正确流程应该是:
- 先
git fetch origin develop,获取远程develop的最新提交 - 切换到本地develop分支(也就是作者写的
git checkout develop) - 执行
git pull origin develop,把远程最新代码拉到本地develop - 合并feature分支(
git merge feature/xxx) - 最后推送到远程(
git push origin develop)
作者只写了checkout develop,是因为分支模型的核心是讲分支流转逻辑,而非每一步的基础同步命令——默认你知道合并前要确保本地develop是最新的,而fetch就是实现这个前提的必要操作之一,只是没在流程里单独列出而已。
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

