Git 的分支(Branch)功能是其最强大的特性之一,它允许开发者在不同的分支上进行独立的开发,而不会影响主分支。分支管理使得 Git 在团队协作和版本控制方面更加高效。本章将介绍 Git 分支的概念、创建和删除分支、分支合并、检出分支、分离
HEAD
状态等内容。
8.1 使用分支的原因
分支的主要作用是提供一个独立的环境来进行开发,而不会影响主分支(通常是 main
或 master
)。使用分支的主要原因包括:
- 并行开发:不同功能的开发人员可以在不同的分支上工作,而不会干扰其他人的工作。
- Bug 修复:可以在一个新分支上修复 Bug,并在测试通过后合并到主分支。
- 代码管理:在代码合并之前,可以在分支上进行代码审查,确保质量。
- 试验性开发:可以创建实验性分支进行尝试,而不影响主分支的稳定性。
8.2 分支名
在 Git 中,分支名是一个指向某个提交的标签。默认情况下,Git 仓库在初始化时会创建一个名为 main
(或 master
)的主分支。
查看当前所在的分支:
git branch
创建一个新分支 feature-branch
:
git branch feature-branch
切换到该分支:
git checkout feature-branch
8.3 使用分支
Git 的分支非常轻量级,创建和切换分支的速度非常快。通常的分支使用流程如下:
- 创建分支:
git branch new-feature
- 切换到该分支:
git checkout new-feature
- 进行开发并提交:
git commit -m "实现新功能"
- 合并回主分支:
git checkout main
,然后git merge new-feature
- 删除该分支(如果不再需要):
git branch -d new-feature
8.4 创建分支
使用 git branch
命令可以创建一个新分支,但不会自动切换到该分支:
git branch new-feature
如果要创建并切换到该分支,可以使用 git checkout -b
:
git checkout -b new-feature
Git 也提供了 git switch
命令(Git 2.23+):
git switch -c new-feature
8.5 列出分支名
要查看本地所有分支,可以使用:
git branch
要查看远程分支(已推送到远程的分支):
git branch -r
查看所有分支(本地和远程):
git branch -a
8.6 查看分支
查看当前分支的最后一次提交:
git log --oneline --decorate --graph --all
查看某个特定分支的提交记录:
git log branch-name
8.7 检出分支
检出(Checkout)分支意味着切换到另一个分支进行开发。
8.7.1 检出分支的一个简单例子
切换到已有分支:
git checkout feature-branch
8.7.2 有未提交的更改时进行检出
如果当前分支有未提交的更改,Git 会阻止切换分支,可以使用 git stash
暂存更改:
git stash
git checkout other-branch
然后在新分支恢复更改:
git stash pop
8.7.3 合并更改到不同分支
如果希望把当前分支的更改带到新分支,可以使用 git cherry-pick
或 git rebase
。
git cherry-pick <commit-hash>
8.7.4 创建并检出新分支
git checkout -b new-feature
8.7.5 分离 HEAD 分支
Git 允许进入 “分离 HEAD(detached HEAD)” 模式,以便在特定的提交上进行操作,而不影响任何分支。
git checkout <commit-hash>
此时,HEAD 将指向该提交,而不是某个分支。如果希望保存修改,需要创建一个新分支:
git checkout -b temp-branch
8.8 删除分支
删除本地分支:
git branch -d feature-branch
如果分支未合并,需要强制删除:
git branch -D feature-branch
删除远程分支:
git push origin --delete feature-branch
结论
本章介绍了 Git 分支的基本概念,包括创建、切换、查看、检出和删除分支的方式。分支管理是 Git 的核心功能之一,掌握分支操作对于高效开发和团队协作至关重要。