GIT:常用分支相关命令(git branch)
在开发过程中一般会用到Git进行版本管理,操作本地分支并与远程仓库交互是非常常见的操作。
branch分支
是指在开发主线中分离出来的,做进一步开发而不影响到原来的主线。
Git存储的不是一系列的更改集,而是一系列快照,当你执行一次commit时,git存储一个commit对象,它包含一个指针指向你当前需要提交的内容的快照。
master分支是在git init命令运行时默认创建一个分支,并命名为master。
查看分支
git branch // 列出本地已经存在的分支,当前分支会用 * 标记
git branch -r // 查看远程仓库的分支列表
git branch -a // 查看所有分支列表(包含本地和远程分支)
git branch -vv // 查看本地分支对应的远程分支
git branch -v // 查看一个分支的最后一次提交
git branch --merged // 查看哪些分支已经合并到当前分支
git branch --no-merged // 查看所有未合并工作的分支
创建分支
git branch dev // 创建名为dev的分支(创建分支时需要是最新的环境,创建分支但依然停留在当前分支上)
提交本地分支
git push origin dev
删除分支
git branch -d dev // 删除本地dev分支
git branch -D dev // dev分支还没合并入主分支,所以要用-D参数才能删除掉
git push origin --delete dev // 删除远程dev分支
批量删除分支
# 删除(当前分之外)*已合并* 的所有分支
git branch | xargs git branch -d
# *强制* 删除(当前分之外)的所有分支
git branch | xargs git branch -D
# 删除(当前分之外)*包含指定字符* 的所有 *已合并* 的分支
git branch | grep "dev*" | xargs git branch -d
# *强制* 删除(当前分之外)*包含指定字符* 的所有分支
git branch | grep "dev*" | xargs git branch -D
- "git branch" - 列出本地已经存在的分支,当前分支会用 * 标记
- " | " - 管道命令,用于将一串命令串联起来,前面命令的输出可以作为后面命令的输入
- "xargs" - 用于给命令传递参数的一个过滤器,也是组合多个命令的一个工具
- "grep" - 搜索过滤命令。使用正则表达式搜索文本,并把匹配的行打印出来
- " * " - 通配符,如 "dev*" 指所有包含 "dev" 开头的匹配字符串," dev-1 "、" testdevv "、" devvv " 等
更新本地的远程分支列表
git remote update origin --prune
重命名分支
git branch -m oldName newName // 给分支重命名
切换分支
/* 操作文件 */
git checkout fileName // 放弃单个文件的修改
git checkout . // 放弃当前目录的修改
/* 操作分支 */
git checkout master // 将分支切换到master
git branch -b master // 如果分支存在则只切换分支,若不存在则创建并切换到master分支,repo start是对git checkout -b这个命令的封装,将所有仓库的分支都切换到master,master是分支名,
/* 查看帮助 */
git checkout --help
拉取分支
git checkout dev // 将远程分支dev拉取下来到本地dev分支
git pull dev // 拉取远程分支dev中内容
git checkout -b test origin/test_remote // 将远程分支test_remote拉取下来到本地test分支
git fetch origin // 同步远程服务器的数据到本地
合并分支
/* 合并流程 */
git checkout test // 切换到test分支
git pull // 从远程仓库拉取最新代码到本地test
git checkout dev // 切换到当前分支 dev
git merge test // 将test分支拉取下来的代码合并到dev
/* ----------- */
git merge --abort // 如果git merge的时候出现冲突,可以执行这个命令取消merge。
git cherry-pick commit_id // 将一个分支的commit_id提交合并到当前分支上,并舍弃另一个分支上的其他提交。