Git常用分支命令
一. 本地分支相关
1.新建分支
git branch BranchName
2.重命名分支
git branch -m OldBranchName NewBranchName
2.删除本地分支
git branch -d branchName
3.删除本地分支
git branch -d BranchName
4.强制删除本地分支
git branch -D branchName
4.修改分支名称/移动名称
git branch --move branchName NewBranchName
5.删除远程分支
git branch -dr origin/远程分支名
git push origin --delete 远程分支名
5.查看当前分支以及分支列表
git branch
6.列出远程跟踪分支和本地分支
git branch -a
7.查看分支详情
git branch -v
8.查看分支追踪目标
git branch -vv或者 通过.git/config文件查看分支追踪的目标
9.查看远程分支看不到的时候使用git fetch更新一下索引
git branch -r
10.不设置远程追踪配置
git branch BranchName --no-track
11. 设置远程追踪
git branch BranchName --set-upstream-to=origin/BranchName
# 查看该commit在本地的那个分支中
git branch --contains CommitID
# 查看该commit在远程分支的那个分支中
git branch -r --contains CommitID
# 查看该commit在本地和远程的那个分支中
git branch -a --contains CommitID
12.切换当前分支到BranchName(切换前需确认当前分支,没有未Commit的内容,否则会带到BranchName中)
git checkout BranchName
13.合并分支
git merge xxx(将xxx分支合并到当前分支)
14.拉取远程分支中的更新同时合并(该命令拉取本地不存在的远程分支时,会自动和当前分支合并一下,然后再新建一个分支.)
git pull <远程主机名> <远程分支名>:<本地分支名>(如果存在追踪关系,可以直接使用git pull)
15.拉取远程分支中的更新不合并
git fetch <远程主机名> <分支名>(不写分支名为,拉取所有远程分支)
git fetch origin master 不拉取分支master仅将当前分支的FETCH_HEAD设为远程master分支
git fetch origin master:tmp 拉取远程分支master到本地tmp, 不存在则创建
# 拉取到本地的代码临时版本会放到.git/FETCH_HEAD中,
# 而本地最高版本在HEAD中,先比较一下看看有哪些改动
# FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
当前和远程库master中该文件的差异
git merge FETCH_HEAD # 进行合并操作
# FETCH_HEAD指的是: 某个branch在服务器上的最新状态'.
# 每一个执行过fetch操作的项目'都会存在一个FETCH_HEAD列表,
# 这个列表保存在 .git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支.
# 当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支.
# 一般来说, 存在两种情况:
# 如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD.
# 如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.
# 通过我今天fetch拉取学彤xt_add_banner分支时的反馈,得出这一点.
# bogon:btc_haiwan_www liuhao$ git fetch lxt_upstream xt_add_banner
# From code.aliyun.com:liuxuetong/btc_haiwan_www
# * branch xt_add_banner -> FETCH_HEAD
# 查看dev分支中有的, 而master中没有
git log dev ^master
# 查看 dev 中比 master 中多提交了哪些内容
git log master..dev
# 不知道谁提交的多谁提交的少,单纯想知道有什么不一样
git log dev...master
# 再显示出每个提交是在哪个分支上:
git log --left-right dev...master
注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。
二.设置分支追踪
1.新建本地分支同时追踪远程仓库origin分支master
如果不指定该本地追踪分支的名字,默认和远程仓库的分支名字一样
(此种方式新建分支时,和当前所在的本地分支无关,不会将已提交的文件带到新分支去)
git checkout -b LocalName --track origin/master
2.将已有的本地分支设置追踪远程分支
git branch --set-upstream LocalName origin/master # 设置指定分支追踪到origin/master
或
git branch -f --track LocalName origin/master # 设置指定分支追踪到origin/master
git branch --set-upstream-to origin/master #设置当前分支追踪到origin/master
3. 在origin/master的基础上,创建一个新分支。
git checkout -b newBrach origin/master
三.远程分支相关
1.查看远程分支
git branch -r
2.查看所有的远程和本地分支
git branch -a
3.查看远程分支详情
git branch -av
4.查看远程分支详情以及追踪目标
git branch -avv
5.删除远程分支
git branch -r -d origin/BranchName
6.查看本地分支更加详细内容(包含当前分支追踪对象)
git branch -vv
7.查看本地分支详情
git branch -v
注释:
origin的意义 >
当我们执行, git branch -a 时查看到结果
remotes/origin/HEAD -> origin/master #啥意思呢?
通过查看 .git/config文件或者使用git remote –v 发现 origin只是类似于别名一样的存在;