如何从已有分支创建新的 Git 分支
从已有分支建分支:git checkout -b <新分支> <源分支> 一步完成(git switch -c 同效);或先 git checkout 源分支再 git branch 新分支。新分支从源分支当前提交起步,历史完全共享。
一条命令搞定:git checkout -b 新分支名 源分支名(新语法 git switch -c 新分支名 源分支名)。新分支从源分支当前的最新提交分出,两者共享之前全部历史,之后的提交互不影响。
常用写法
# 一步:从 develop 建 feature 分支并切过去
git checkout -b feature/login develop
git switch -c feature/login develop # 等价新语法
# 两步:先切到源分支,再建
git checkout develop
git branch feature/login # 只建不切
git switch feature/login # 再切换
# 从远程分支建(本地还没有 develop 时)
git checkout -b feature/login origin/develop
注意"分叉点"
新分支的起点是源分支此刻的提交。之后源分支继续提交,新分支不会自动跟上——需要同步时用 git merge develop 或 git rebase develop。
常见配套习惯
- 命名带前缀:
feature/、bugfix/、hotfix/,一眼看出用途; - 建完立即推送建立远程跟踪:
git push -u origin feature/login; - 从错误的分支分出来了?没关系,rebase 可以换基:
git rebase --onto main wrong-base feature/login。
常见问题(FAQ)
Q:可以不切到新分支吗?
可以,git branch 新分支 源分支 只创建不切换。适合先批量开好分支稍后处理。
Q:源分支删除了,分出来的分支还在吗?
在。分支只是指针,删除源分支不影响已分出的分支及其提交。
Q:怎么确认新分支是从哪分出来的?
git merge-base feature/login develop 给出共同祖先提交;git log --oneline --graph --all 看图最直观。