【Git基础】02——分支:在不破坏主线的情况下做实验

张开发
2026/4/16 11:22:15 15 分钟阅读

分享文章

【Git基础】02——分支:在不破坏主线的情况下做实验
基础篇【Git 基础】01——代码是怎么被追踪的​ 之前我们介绍了 git 的基础工作流add → commit → push。但现实开发很快会遇到一个问题你想尝试一个新功能但不确定能不能成功又不想把main分支搞乱。比如想重构一段代码、想试一个新架构、修一个可能越修越坏的 bug。 这时候如果所有修改都直接提交到main项目很容易进入混乱状态。Git 分支就是为了解决这个问题而存在的一、分支是什么​ 分支可以理解为一条独立的提交时间线。你从 main 上某个节点分叉出去在新分支上自由提交、修改main 完全不受影响。做好了再合并回去做坏了直接删掉。​ 注意分支不是复制一份代码它只是一个指针指向某个 commit 节点。创建分支几乎没有开销这也是 Git 能支持大量并行开发的原因。二、分支基础操作2.1 创建并切换分支gitcheckout-bfeature/login​ 其中-b表示新建分支feature/login是分支名。​ 这条命令等价于gitbranch feature/login# 创建gitcheckout feature/login# 切换过去​ 现代 git 更推荐使用git switchgitswitch-cfeature/login# -c 等同于 -bcreate 的意思​分支名的约定feature/前缀表示新功能fix/表示修 bugrelease/表示发布准备hotfix/紧急修复。Git 不强制但统一规范会带来两个好处 分支列表一眼可读 CI/CD 自动化更容易配置。2.2 查看当前在哪个分支gitbranch​ 输出里带*的就是当前分支* feature/login main​ 本质上HEAD 指针正在指向这个分支。2.3 在新分支上正常开放​ 切到新分支后工作流和之前完全一样改代码 →git add→git commit。唯一不同的是commit 被记录在feature/login 这条时间线上不会影响 main。2.4 切回 maingitswitch main​ 切回去之后你会发现工作目录恢复成了 main 的状态在 feature 分支上做的改动消失了。它们没有被删除只是 git 切换了当前指针feature 分支的内容还在切回去就能看到。​ 其实这里Git 并不是在“改文件”。Git 在做的是切换整个项目的历史快照。2.5 合并分支​ feature 做好了合并回 maingitswitch maingitmerge feature/login​ git 会把feature/login上的 commit 合并到 main。如果两条分支没有修改同一个地方合并是自动完成的。​ 合并完之后feature 分支就可以删掉了。因为历史已经进入 main不再需要它。gitbranch-dfeature/login三、冲突两个人改了同一个地方​ 合并时最常见的麻烦是冲突conflict你和别人都修改了同一个文件的同一段代码git 不知道该保留哪个就会暂停合并让你手动决定。3.1 冲突内容​ 冲突文件会变成这样HEAD def greet(name):returnfHello, {name}!def greet(name):returnfHi, {name}!feature/login​ 其中 HEAD到是你当前分支的版本而到是要合并进来的版本3.2 解决方法​ 直接编辑文件删掉你不想要的那段和所有、、标记留下最终想要的代码然后告诉git你已经解决gitadd冲突文件名gitcommit​ 冲突解决完毕。​ 冲突不是 git 的 bug是正常现象。解决原则很简单两个版本都看一眼留你想要的删掉标记符号重新提交。冲突是 Git 的安全机制而不是失败。四、推送分支到 GitHub​ 本地分支推到远程gitpush origin feature/login​ 推上去之后可以在 GitHub 上开一个Pull RequestPR这是我想把这个分支合并到 main的申请团队成员可以在上面 review 代码CI 也会在这里跑。​ PR 通过后点 GitHub 上的 Merge 按钮就完成了合并。合并完可以在 GitHub 上直接删掉远程分支本地也同步清理gitbranch-dfeature/login# 删本地分支gitremote prune origin# 清理本地对已删除远程分支的引用五、典型的分支工作流​ 独立项目和团队协作的分支策略不一样。5.1独立项目简单策略main ← 只放稳定、可用的代码 feature/* ← 每个新功能一个分支做好合并回 main fix/* ← 每个 bug 修复一个分支5.2 团队协作常见策略main ← 对应生产环境只接受 PR 合并不直接 push dev ← 日常开发的集成分支功能分支合并到这里先验证 feature/* ← 从 dev 分叉完成后合并回 dev​ 不需要在第一个项目就用最复杂的策略从main feature 分支开始感受到不够用再升级。六、总结​ 记住这几个核心认知你就真正理解分支了分支是一条提交历史线分支不是复制代码而是指针切换分支 切换项目快照merge 是历史的合流冲突是 Git 请求人工决策git分支可以让我们安全试错而软件开发本质上就是持续试错。

更多文章