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