跳到主要内容

git 分支管理

分支是 git 中管理不同状态的一种途径。

一、查看分支

git branch  #  查看当前分支,带 * 的是当前活跃分支
git branch --list # 查看当前分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支

查看 git 分支的详细每一个版本:

git show-branch

二、创建分支

git branch {新分支名称} {分支}

如果是在当前分支进行创建新的分支,可以省略后买呢分支。

三、切换分支

切换分支属于危险操作:

git checkout {要切换的分支名}
git checkout -b {待创建的分支名} origin # 创建新分支并切换过去
git checkout --force {要切换的分支名} # 强制覆盖并切换分支
# 以某一已知哈希值的提交最为 HEAD 切换分支
git checkout -b {新分支名} {某一个提交的唯一哈希值}
# 以过去的前几次提交为 HEAD 切换分支
git checkout -b {新分支名} HEAD^{n}

git checkout 也可用于恢复文件/文件夹使用:

git checkout HEAD {待恢复文件(文件夹)名}

四、重命名分支

git branch -m {旧分支名} {新分支名} #

五、删除本地分支

删除分支前,需要先切换到其他分支

git branch -d {待删除分支名称}
git branch -D {待删除分支名称} # 强制删除指定分支

六、恢复删除分支

git reflog #  查找散列值
git branch {待恢复已删除分支名} HEAD@{上面查找的散列值} # 根据散列值恢复已删除分支

七、强制创建并切换分支

git checkout -b {branch name}

八、快速对比两个分支提交

1. 简单查看 A 落后于 B 几个提交

git rev-list --count temp..main

上面将展示 temp 落后于 main 的提交数。当然,在不携带 --count 时,展示的是具体的提交的哈希值

git log --online --graph temp..main

上面将展示 temp 落后于 main 分支的具体提交的提交信息

2. 同时查看领先与落后

git rev-list --left-right --count temp...main

上面将展示 temp 分支 领先数量 落后数量 于 main 分支情况。

3. 仅统计线形主干

仅统计线形主干而忽略合并提交的旁支路径(特殊场景使用)。

git rev-list --first-parent --count temp..main