git基于历史commit 拉分支

Git 里“基于历史 commit 拉分支”,本质上就是:
让新分支的 HEAD 指向某个历史 commit


一、核心原理

Git 提交历史其实是一个 有向无环图(DAG)

graph LR
A[commit A] --> B[commit B]
B --> C[commit C]
C --> D[commit D main]
B --> E[commit E feature]

假设当前 mainD
但你想 从 commit B 拉一个新分支

本质就是:

branch_new -> commit B

二、找到历史 commit

先查看历史:

1
2
git log --oneline
git log --graph --oneline --all

示例:

a83c1d1 fix bug
5f2d9b2 add api
7ac12fa init project

假设你要从:

5f2d9b2

创建分支。


三、最常用方法(推荐)

1.直接创建并切换

1
git checkout -b new_branch 5f2d9b2

或新语法:

1
git switch -c new_branch 5f2d9b2

效果:

new_branch -> 5f2d9b2

2.只创建分支不切换

如果只是创建:

1
git branch new_branch 5f2d9b2

查看:

1
git branch

3.推送分支到远程仓库

例如需要推送:

1
git push origin new_branch

如果想指定远程:

1
git push -u origin new_branch