git——分支详解
分支查看
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 显示本地分支当前指向的提交记录的哈希值
$ git branch -v
# 显示本地分支当前指向的提交记录的哈希值
# 以及和其上游分支(远程跟踪的分支)的相对位置(及本地分支和远程分支是同步,超前,还是落后),如果有的话。
$ git branch -vv
参考:git branch -v、git branch -vv、git branch -verbose
分支创建和跟踪
# 新建一个本地分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个本地分支,指向指定commit
$ git branch [branch-name] [commit]
# 新建一个本地分支,并切换到该分支,如有远程分支参数,将建立和远程分支的跟踪。
$ git switch -c [branch-name] [origin/remote-branch]
# 新建一个本地分支,与指定的远程分支建立追踪关系
$ git branch --track [branch-name] [origin/remote-branch]
# 新建一个本地分支,并切换到该分支,如有远程分支参数,将建立和远程分支的跟踪。
$ git checkout -b [branch-name] [origin/remote-branch]
# 新建一个远程分支,根据已有的本地分支 但是分支之间未有关联
$ git push origin [本地分支名称]:[远程分支名称] // 使用一个,默认本地分支和远程分支相同;
# 根据已有的本地分支,跟踪远程分支
$ git branch -u [origin/remote-branch] [branch-name] // 如果不带本地分支名称,则为当前分支。
# 根据已有的本地分支,跟踪远程分支
$ git branch --set-upstream-to [origin/remote-branch] [branch-name] // 如果不带本地分支名称,则为当前分支。
# 取消分支跟踪
$ git branch --unset-upstream [branch-name] // 如果不带本地分支名称,则为当前分支。
分支切换
$ git checkout [branch-name]
$ git switch [branch-name]
分支删除
# 大概步骤分为:1.删除本地分之;2.删除远程分支;3.删除跟踪分支;
# 删除本地分支
# 在使用--delete(-d)删除分支时,该分支必须完全和它的上游分支merge完成,如果没有上游分支,必须要和HEAD完全merge
$ git branch --delete(-d) [branch-name]
# 删除本地分支
# -D是--delete --force; 可以在不检查merge状态的情况下删除分支
$ git branch --delete --force(-D) [branch-name]
# 删除远程分支
# 该指令也会删除追踪分支
$ git push origin --delete [remote-branch]
# 删除跟踪分支
git branch --delete --remotes [origin/remote-branch]
branch命令常用参数说明
$ git branch //查看本地所有分支
$ git branch -r //查看远程所有分支
$ git branch -a //查看本地和远程的所有分支
// PS: git branch -a(-r) 无法获取远程已经存在的分支;
// 原因是:git branch -a(-r) 这条命令并没有每一次都从远程更新仓库信息,我们可以手动更新一下。如:git fetch origin
$ git branch <branchname> //新建分支
$ git branch -d <branchname> //删除本地分支
$ git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
$ git push origin:<branchname> //删除后推送至服务器
$ git branch -m <oldbranch> <newbranch> //重命名本地分支
/**
*重命名远程分支:
*1、删除远程待修改分支
*2、push本地新分支到远程服务器
*/
//git中一些选项解释:
-d
--delete:删除
-D
--delete --force的快捷键
-f
--force:强制
-m
--move:移动或重命名
-M
--move --force的快捷键
-r
--remote:远程
-a
--all:所有
参考:git-branch