git-branch

发布时间 2023-07-13 15:24:21作者: lxd670

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会显示本地分支关联了那个远程分支,对于查看远程分支情况vvv现实效果一样

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