业务背景
在实际开发过程中,经常是基于 master/main 分支切出来一个新分支进行新功能的开发,本文将介绍通过 git 命令行来讲解基于 master/main 分支新建分支
实现代码
直接上代码不多BB,具体详细解释往下翻
// 1. clone 主分支,如果已经 clone过了请跳到第2步
git clone 主分支连接
// 2. 切换到主分支 master/main/xxx
git checkout master 或 git checkout main
或任何你要基于的分支(前提是已经存在该分支,不存在则加上 -b)
git checkout xxx(不存在该分支时,git checkout -b xxx)// 3. 拉取该分支最新的代码
git pull origin master 或 git pull origin xxx
// 4. 新建分支(注意不能与远程已有分支重复)
git checkout -b 分支名
// ----->到第四步已经算完成了,可以进行开发了,第五步开始是本地和远程关联可做可不做<-----// 5. 本地分支和远程分支进行关联
git push origin 分支名(第四步新建的分支名)
git branch --set-upstream-to=origin/分支名(第四步新建的分支名)// 6. 验证是否关联成功具体看下面解释
git pull 显示 Already up to date.
或
git branch -vv 显示 分支名 [origin/分支名] 则表示关联成功
详解
1. git clone
git clone 代码库的分支代码
2. git checkout
git checkout 要基于的分支名(master/main/xxx)
git checkout 是 git 命令行里切换分支的意思
如果本地没有该要基于的分支则要加上 -b
git checkout master / git checkout xxx
3. git pull
git pull 拉取要基于的分支的最新代码
先拉取的原因是因为如果不是基于最新的,会没办法 push 到远程,会提示:你当前的分支代码落后于远程的分支代码,所以在切换到新的分支前我们需要拉取要基于的分支的最新代码。
代码行里加上 origin 是因为本地的分支与远程的分支可能还没有进行关联,原因请看第5步
git pull origin master / git pull origin xxx
4. git checkout -b
git checkout -b 分支名 意思是新建分支并切换到该分支
git checkout -b 分支名
5. 关联
做完第四步后基于 master 或 xxx 分支 新建本地分支就算完成了,进不进行关联都不影响该分支的开发和推送到远程
关联命令行
git branch --set-upstream-to=origin/新建的分支名
关联前后 推送/拉取 命令行
// 关联前
git pull origin 分支名 / git push origin 分支名
// 关联后
git pull 分支名 / git push 分支名
看起来关联前每次 推送/拉取 操作都需要加上 origin ,关联后则不需要,就和 master 一样不需要加 origin,master 不需要加 origin 是因为在clone一个代码库的时候,git 已经自动帮我们关联了本地和远程的分支,所以master 才不用加 origin,同理在 git clone 某个分支后也不用进行关联,当然自己新建的分支想要做到这种效果则需要进行本地和远程的关联。
origin 其实就是远程仓库的地址 http://xxxx.git 的名称,所以
git push origin 分支名
相当于
git push http://xxx.git/分支名
在项目的 .git里的 config 文件里可以找到类似于下面代码的配置,其中 master 是 git clone 时自动加上的,如果其他分支进行了关联也会在配置文件里加上对应的分支名称,所以在 pull/push 命令行时就不用再加 origin了。(不建议手动修改-. -)
[remote "origin"]
url = http://xxxxxx.git
[branch "master"]
remote = origin
[branch "新建的分支"]
remote = origin
6. 验证是否关联成功
1. git pull
不需要加分支名和origin
git pull
成功提示
git pull
Already up to date.
失败提示
失败提示里,其实也说明了具体的操作步骤
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1)for details.
git pull <remote><branch>
If you wish to set tracking information forthis branch you can do so with:
git branch --set-upstream-to=origin/新建分支名
2. git branch -vv
成功提示
新建分支名 xxxxxxxx(一个hash值)[origin/新建分支名]
失败提示
关联失败则没有 [origin/新建分支名]
欢迎大家评论区讨论和指出错误。
版权归原作者 W1ping 所有, 如有侵权,请联系我们删除。