1.branch概念
branch指向一个commit,而HEAD是一个指针,指向当前分支最新的commit
2.创建分支
git branch <branch_name> # 创建分支
git checkout -b <branch_name> # 创建分支并切换分支
git switch -c <branch_name> # 创建分支并切换分支
3.删除分支
git branch -d <branch_name> # 删除创建分支(分支有提交的的话会删除不掉)
git branch -D <branch_name> # 强制删除创建分支
4.修改分支
git branch -m <branch_name> # 修改当前分支名
git branch -M <branch_name> # 修改当前分支名(强制)
git branch -m <old_branch_name> <new_branch_name> # 重命名指定分子支名
git branch -M <old_branch_name> <new_branch_name> # 重命名指定分子支名(强制)
5.查看分支
5-1.查看分支名
⚠️ 配合 -r 即可查看合并/未合并的「远程」分支
⚠️ 配合 -a 即可查看合并/未合并的「本地」和「远程」分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看本地和远程分支
5-2.查看分支信息信息
⚠️ 配合 -r 即可查看合并/未合并的「远程」分支
⚠️ 配合 -a 即可查看合并/未合并的「本地」和「远程」分支
git branch -v # 查看本地分支的commit id及其对应的备注信息
git branch -vv # 在 -v 的基础上多显示一个本地分支对应的上游分支
git branch -vr # 查看远程分支的commit id及其对应的备注信息
git branch -vvr # 在 -v 的基础上多显示一个远程分支对应的上游分支
git branch -avv # 查看分支信息
远程分支情况
vv
会显示本地分支关联了那个远程分支,对于查看远程分支情况v
和vv
现实效果一样
git branch -rv > a
git branch -rvv > b
diff a b
5-3.格式化输出
git branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
6.查询commit
6-1.查看是否合并到当前分支的分支
⚠️ 配合 -r 即可查看合并/未合并的「远程」分支
⚠️ 配合 -a 即可查看合并/未合并的「本地」和「远程」分支
# --merged: 列出合并到 HEAD(或指定的 commit)中的分支
git branch --merged [<commit>]
# --no-merged: 列出尚未合并到 HEAD(或指定的 commit)中的分支
git branch --no-merged [<commit>]
6-2.查看是否包含指定提交的分支
⚠️ 配合 -r 即可查看合并/未合并的「远程」分支
⚠️ 配合 -a 即可查看合并/未合并的「本地」和「远程」分支
# --contains: 只列出包含指定提交的分支(如果没有指定则为HEAD)
git branch --contains [<commit>]
# --no-contains: 只列出不包含指定提交的分支(如果不指定则为HEAD)
git branch --no-contains [<commit>]
7.案列
7-1.查看master分支信息
7-1-1.查看head指向
cat .git/HEAD
ref: refs/heads/master
7-1-2.查看head对应的commit
cat .git/refs/heads/master
bd25c7455f21f6aa5f821e93839485283854eaab
7-1-3.查看log日志
git log --oneline --graph
* bd25c74 (HEAD -> master) add a.txt
7-2.创建分支查看详细
如果
git checkout -b <branch_name>
或git switch <branch_name>
时,如果当前本地仓库关联了远程仓库。并且新建的branch_name
和远程仓库branch_name
相同的话,会直接拉去远程仓库的branch_name
分支
7-2-1.创建分支
git switch -c dev
Switched to a new branch 'dev'
7-2-2.查看head指向
cat .git/HEAD
ref: refs/heads/dev
7-2-3.查看head对应的commit
cat .git/refs/heads/dev
bd25c7455f21f6aa5f821e93839485283854eaab
7-2-4.查看log日志
git log --oneline --graph
* bd25c74 (HEAD -> dev, master) add a.txt
7-3.删除分支详细
删除分支不会删除文件信息
7-3-1.切换分支
git switch master
Switched to branch 'master'
7-3-2.删除dev分之
git branch -d dev
Deleted branch dev (was bd25c74).
7-3-3.查看was对象
git cat-file -t bd25c74
commit
7-3-4.查看commit对象
git cat-file -p bd25c74
tree 65a457425a679cbe9adf0d2741785d3ceabb44a7
author user-name <xxxxx@xxx.com> 1689086750 +0800
committer user-name <xxxxx@xxx.com> 1689086750 +0800
add a.txt
7-3-5.查看tree对象
git cat-file -p 65a457425a679cbe9adf0d2741785d3ceabb44a7
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 a.txt