Git 分支管理基础:创建、切换与合并实战
Git 的分支机制是版本控制的核心,它允许我们在不干扰主线的情况下进行并行开发。想象一下,你拥有多条独立的时间线:在 master 上维护稳定版本,在 dev-feature 上尝试新功能,或者在 hotfix 中紧急修复生产环境 Bug。这些时间线互不干扰,直到你需要将它们融合。
理解分支原理
每次提交,Git 都会将记录串成一条时间线,这条线就是一个分支。默认情况下,我们只有一个主分支(通常是 master 或 main)。
HEAD 指针非常关键。严格来说,HEAD 指向的是当前分支,而分支本身才指向具体的提交对象。只要 HEAD 始终指向当前分支,就能定位到最新状态。
查看 .git/HEAD 文件可以确认当前指向:
user@host:~/project$ cat .git/HEAD
ref: refs/heads/master
这意味着当前处于 master 分支。随着提交增加,master 指针会向前移动,HEAD 也随之更新。
创建分支
Git 支持快速创建新分支。创建分支本质上是创建一个指向当前提交的新指针。
user@host:~/project$ git branch
* master
user@host:~/project$ git branch dev
user@host:~/project$ git branch
* master
dev
执行 git branch dev 后,Git 生成了一个新的 dev 指针,初始指向与 master 相同的提交。此时两个分支内容一致:
user@host:~/project$ ls .git/refs/heads/
dev master
切换分支
实际开发中,我们需要在不同分支间切换上下文。使用 git checkout 命令即可。
user@host:~/project$ git checkout dev
Switched to branch 'dev'
user@host:~/project$ git branch
* dev
master
切换成功后,HEAD 会指向 dev 分支。此时在 dev 上修改文件并提交,不会影响 master 的状态。
user@host:~/project$ echo "write aaa for new branch" >> book
user@host:~/project$ git add .
user@host:~/project$ git commit -m "modify book"
[dev 33a5368] modify book
1 file changed, 1 insertion(+)
切回 master 查看,刚才的修改不会显示,因为 master 的提交点并未改变:
user@host:~/project$ git checkout master
Switched to branch 'master'
user@host:~/project$ cat book
Hello Island1314
Hello World
hello version1
hello version2
hello version3


