什么是 Git 分支?
Git 分支机制通过在代码仓库中创建独立的开发分支,使开发团队能够在不影响主干代码(如main
分支)稳定性的前提下,实现多功能的并行开发、问题修复和实验性探索。
作为现代版本控制系统,几乎所有版本控制系统都以不同形式支持分支机制,每个分支都代表一条完全独立的代码演进路径。
Git 分支的作用?
在团队协作开发项目中,开发者可以从主线(如master
或main
分支)创建独立的个人开发分支。该分支完全由开发者自主管理,所有代码变更和提交都仅作用于该分支,既不会干扰主线的稳定性,也不会影响其他成员的并行开发。
在分支的功能开发完成并通过所有测试验证后,开发者需要发起合并请求(Pull Request/Merge Request)将代码变更合并至主线,待团队完成代码审查并确认无误后,即可安全删除该功能分支。
分支操作(包括创建、切换和删除)都是基于本地仓库的轻量级操作,执行时间通常在毫秒级,这使得分支管理极其高效。只有当需要将变更同步到远程仓库(如合并到主线)时,才需要进行网络通信。
Git 分支管理
Git 的分支管理机制为开发者提供了极大的灵活性,通过便捷的分支创建、切换、合并操作,以及高效的冲突处理能力和分支清理功能,使团队协作开发变得更加流畅高效。
✅ 以下是整理的 Git 分支管理常用命令速查表:
操作类别 | 命令 | 说明 |
---|---|---|
创建分支 | git branch <branch-name> |
创建新分支 |
git checkout -b <branch-name> |
创建并立即切换到新分支 | |
查看分支 | git branch |
查看本地分支列表(当前分支前有* 号) |
git branch -v |
查看分支最后一次提交信息 | |
git branch -a |
查看所有分支(包括远程) | |
切换分支 | git checkout <branch-name> |
切换到指定分支 |
git switch <branch-name> |
(Git 2.23+) 切换到指定分支 | |
合并分支 | git merge <branch-name> |
将指定分支合并到当前分支 |
git merge --no-ff <branch-name> |
禁用快进合并(保留分支历史) | |
删除分支 | git branch -d <branch-name> |
删除已合并的分支 |
git branch -D <branch-name> |
强制删除未合并的分支 | |
远程分支操作 | git push origin <branch-name> |
推送本地分支到远程 |
git push origin --delete <branch-name> |
删除远程分支 | |
git fetch -p |
同步远程分支状态(清理已删除的远程分支本地记录) | |
冲突解决 | git status |
查看冲突文件 |
git diff |
查看具体冲突内容 | |
git mergetool |
使用配置的合并工具解决冲突 | |
分支重命名 | git branch -m <new-name> |
重命名当前分支 |
git branch -m <old-name> <new-name> |
重命名指定分支 | |
分支比较 | git log branch1..branch2 |
查看branch2 有但branch1 没有的提交 |
git diff branch1..branch2 |
比较两个分支的代码差异 |
Git 分支管理实例
以下是经过实操验证的Git分支操作流程详解,助您深入掌握分支管理精髓:
✅ 首先,我们创建dev
分支,然后切换到dev
分支:
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
✅ 然后,用git branch
命令查看当前分支:
$ git branch
* dev
master
git branch
命令会列出所有分支,当前分支前面会标一个*
号。
✅ 然后,我们就可以在dev
分支上正常提交,比如对readme.txt
做个修改,加上一行:
Creating a new branch is quick.
将修改的readme.txt
文件提交dev
分支:
$ git add readme.txt
$ git commit -m "branch test"
[dev b17d20e] branch test
1 file changed, 1 insertion(+)
✅ dev
分支的工作完成后,我们就可以切换回master
主分支:
$ git checkout master
Switched to branch 'master'
切换回master
分支后,再查看一个readme.txt
文件,刚才添加的内容不见了!因为那个提交是在dev
分支上,而master
分支此刻的提交点并没有变。
✅ 现在,我们把dev
分支的工作成果合并到master
分支上:
$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到当前分支。合并后再查看readme.txt
的内容,就可以看到和dev
分支的最新提交是完全一样的。
注意到上面的Fast-forward
信息,Git 告诉我们,这次合并是“快进模式”,也就是直接把master
指向dev
的当前提交,所以合并速度非常快。
当然,也不是每次合并都能 Fast-forward
,我们后面会讲其他方式的合并。
✅ 合并完成后,就可以放心地删除dev
分支了:
$ git branch -d dev
Deleted branch dev (was b17d20e).
删除后,查看branch
,就只剩下master
分支了:
$ git branch
* master
因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master
分支上工作效果是一样的,但过程更安全。
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈