简介
分支就是版本上的更新送代,默认只有master主分支
可以从主分支上分离出其他的分支,各分支间互不干扰
每个项目,一般有多个分支,比如master(主干分支)、开发分支、测试分支、生产bug分支等等
线上环境,一个项目也可能会有多个稳定分支同时在线上运行
但是,分支越多,后期合并分支的成本越大,所以,不要随便创建不必要的分支。
命令汇总
命令 | 作用 | 备注 |
git branch | 查看本地所有分支 | 默认只有master分支 分支前面有*号的表示该分支为当前所在分支 |
git branch -r | 查看远程所有分支 | -r等价--remote:远程 |
git branch -a | 查看本地和远程所有分支 | -a等价--all:所有 |
git branch 分支名 | 创建分支 | 分支名不要包含特殊符号,比如*,/,等等,要见名知意 另外,还可以创建并切换分支:git checkout -b 分支名 |
git checkout 分支名 | 切换分支 |
|
git branch -m 旧分支名 新分支名 | 修改本地分支名 | -m等价--move:移动或重命名 |
先删除远程待修改分支,然后push本地新分支到远程服务器 | 修改远程分支名 | |
git branch -d 分支名 | 删除本地分支,但是不能删除当前所在的分支,要切换到其它分支再删除;这是一个安全的操作,因为当分支中含有未合并的变更时,Git会阻止这一次删除操作,提示:error: The branch 'v1.2' is not fully merged | -d等价--delete:删除 |
git branch -D 分支名 | 强制删除指定分支,即便其中含有未合并的变更。该命令常见于当开发者希望永久删除某一开发过程中的所有commit | -D,delete branch (even if not merged) |
git push origin --delete <branchname> | 删除远程分支 | -d等价--delete:删除 |
命令操作
查看分支
git branch
分支前面有*号的表示该分支为当前所在分支
创建分支
在现有分支拉取一个新分支
这里从master主干拉取一个新分支,需要先切换到master分支,并且更新到最新,然后创建分支
此时可以关联远程仓库某个分支,或者push的时候指定分支,远程分支不存在会创建
git branch v1.1
切换分支
git checkout v1.1
更新分支并push到远程
远程没有1.1,会创建这个分支
远程仓库多了v1.1分支
master分支内容
v1.1分支内容,多了刚刚push的文件
删除分支
创建并切换到v1.2分支
修改v1.2分支并push到远程
远程仓库可以看到v1.2分支
v1.2分支内容
删除本地分支
必须切换到其它分支才可以删除
删除远程分支
远程v1.2分支没了
本地fetch需要的分支
假设都是第一次操作,先clone任意一个分支,再fetch需要的分支
先克隆master,再fetch需要的分支
git clone [email protected]:qzcsbj/pytest_apiautotest.git
或者:
git clone -b master [email protected]:qzcsbj/pytest_apiautotest.git
git fetch [email protected]:qzcsbj/pytest_apiautotest.git v1.1
或者:git fetch origin v1.1
要切换分支后,git branch才能看到刚刚fetch的分支
先克隆非master,再fetch需要的分支
清理数据
git clone -b v1.1 [email protected]:qzcsbj/pytest_apiautotest.git
git fetch [email protected]:qzcsbj/pytest_apiautotest.git master
或者:git fetch origin master
__EOF__
作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等