1. 创建新分支但不切换(仅创建)
git branch <分支名>
- 示例:创建一个名为
new-feature
的分支git branch new-feature
2. 创建分支并立即切换到该分支
git checkout -b <分支名> # 传统方式
# 或
git switch -c <分支名> # Git 2.23+ 推荐方式
- 示例:创建并切换到
new-feature
分支git checkout -b new-feature # 或 git switch -c new-feature
遇到的问题:
系统提示该分支已经存在
- 直接切换到已存在的分支
git switch 新分支的名字
- 删除旧分支后重新创建
# 先删除本地旧分支(确保分支内容已合并或无用)
git branch -d 新分支的名字 # 普通删除
git branch -D 新分支的名字 # 强制删除(未合并的内容会丢失!)# 重新创建并切换
git switch -c 新分支的名字
- 重命名新分支
如果希望保留旧分支,可以换一个名称创建:
git switch -c new_feature_name
- 检查分支是否存在
查看所有本地分支,确认冲突分支:
git branch --list 新分支的名字
3. 基于某个提交(Commit)或标签(Tag)创建分支
git branch <分支名> <commit-hash或tag名>
- 示例:基于提交
52abc1d
创建分支hotfix
git branch hotfix 52abc1d
4. 从远程分支创建本地分支并跟踪
git checkout --track origin/<远程分支名> # 本地分支名默认与远程一致
# 或指定本地分支名
git checkout -b <本地分支名> origin/<远程分支名>
- 示例:从远程分支
dev
创建本地分支并跟踪git checkout --track origin/dev # 或自定义本地分支名 git checkout -b my-dev origin/dev
5. 将新分支推送到远程仓库
创建本地分支后,若需同步到远程仓库:
git push -u origin <分支名> # -u 设置上游(跟踪)分支
- 示例:推送
new-feature
分支到远程git push -u origin new-feature
直接运行git push出现的问题
fatal: The current branch 创建的新分支 has no upstream branch.
To push the current branch and set the remote as upstream, usegit push --set-upstream origin 创建的新分支To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
这个错误提示是因为当前本地分支 创建的新分支
尚未与远程仓库的对应分支关联(即没有设置上游分支)。以下是解决方案:
1. 直接推送并设置上游分支
运行 Git 提示的命令,将本地分支推送到远程仓库并关联(推荐):
git push --set-upstream origin 创建的新分支
或简写:
git push -u origin 创建的新分支
-u
或--set-upstream
:将本地分支与远程分支绑定,后续直接git push
即可。
2. 后续推送简化
设置上游后,未来推送只需:
git push
3. 避免重复设置的配置(可选)
如果你希望未来新建分支时自动关联远程同名分支,可启用自动跟踪配置:
git config --global push.autoSetupRemote true
启用后,未来对新分支直接运行 git push
即可自动关联远程分支。
为什么会出现这个问题?
- 原因:本地分支是新建的,尚未与远程仓库的分支关联。
- 解决逻辑:通过
git push -u
显式绑定本地分支与远程分支的关系。
验证是否成功
- 查看分支跟踪关系:
输出中会显示本地分支关联的远程分支(例如git branch -vv
origin/创建的新分支
)。
其他场景补充
-
如果远程已有同名分支:
若远程分支已存在但未关联,可强制绑定(需先拉取远程内容):git branch --set-upstream-to=origin/创建的新分支
-
推送冲突时:
如果远程分支有更新,先拉取并合并:git pull origin 创建的新分支
操作示例
# 首次推送并绑定远程分支
git push -u origin 创建的新分支# 后续推送(无需指定分支)
git push
按此操作即可解决问题!
常用辅助命令
- 查看所有分支(本地+远程)
git branch -a
- 删除分支
git branch -d <分支名> # 删除本地分支 git push origin --delete <分支名> # 删除远程分支
使用场景示例
-
开发新功能
git switch -c feature-login # 创建并切换到 feature-login 分支 # 开发完成后合并到主分支 git switch main git merge feature-login
-
修复紧急问题
git checkout -b hotfix-issue123 main # 基于 main 分支创建修复分支 # 修复后推送到远程 git push -u origin hotfix-issue123
注意事项
- 分支名尽量清晰(如
feature/login
、bugfix/header
)。 - 操作前确保工作区是干净的(无未提交的修改),或用
git stash
暂存变更。