Git 分支是什么在 Git 中分支Branch 是一个非常核心且强大的概念。你可以把它想象成项目开发的一条独立的时间线。核心思想每个分支都指向项目历史中的某个特定提交commit。当你在某个分支上工作时你所做的所有新提交都会沿着这条“时间线”向前推进而不会影响到其他分支的代码。默认分支当你初始化一个新的 Git 仓库git init或克隆一个现有仓库git clone时Git 会自动创建一个名为main或master的默认分支现代项目通常使用main。轻量级Git 的分支是轻量级的指针创建和切换都非常快速这使得频繁使用分支成为可能。为什么需要分支并行开发多个开发者可以同时在不同的功能上工作互不干扰。隔离风险新功能或实验性代码可以在独立分支上开发直到稳定后再合并到主分支。版本发布可以为不同的发布版本如 v1.0, v2.0维护独立的分支方便进行补丁修复。协作流程支持像 Git Flow、GitHub Flow 这样的团队协作工作流。Git Checkout 到底是什么git checkout是 Git 中一个多功能的命令其核心功能是 “切换”或“恢复” 。你可以把它理解成两个主要作用切换分支这是最常用的功能。它让你在不同的开发线分支之间切换。# 切换到已经存在的 branch-name 分支 git checkout branch-name # 创建并切换到新的 branch-name 分支 (旧版写法现在不推荐) git checkout -b new-branch-name作用将你的工作目录Working Directory中的文件全部替换成branch-name分支所指向的最新提交commit的样子。要求切换分支前你当前的工作目录必须是干净的没有未提交的修改或者这些修改与目标分支不冲突。恢复文件将某个文件或整个工作区恢复到某个特定版本的状态。# 将 file.txt 从当前分支的最新提交中恢复丢弃工作区的修改 git checkout -- file.txt # 将 file.txt 从指定分支如 main的最新提交中恢复 git checkout main -- file.txt # 将 file.txt 从某个特定的提交通过 commit-id 指定中恢复 git checkout commit-id -- file.txt # 恢复所有文件清空本地改动 git checkout .作用这是一个 “撤销” 操作。它会用指定版本分支或提交的文件覆盖你工作区中对应的文件。这个操作是危险的因为它会直接丢弃你对文件的修改且无法通过 Git 找回。重要提示现代 Git 的推荐命令版本 2.23由于git checkout身兼两职切换分支 恢复 / 撤销工作区文件容易让人混淆现代 Git版本 2.23引入了两个更专注的新命令# 恢复工作区的文件丢弃修改 git restore file.txt # 恢复暂存区的文件将文件从暂存区撤出但保留工作区的修改 git restore --staged file.txt总结 如果你是新手或者希望命令意图更清晰强烈建议使用git switch和git restore来代替git checkout的相应功能。Git 常用操作一览这里列出开发中最常用的 Git 操作形成一个基本工作流仓库初始化与克隆git init将当前目录初始化为一个新的 Git 仓库。git clone url从远程服务器克隆一个已存在的仓库。查看状态与历史git status查看工作目录和暂存区的状态哪些文件被修改了、哪些已暂存。git log查看提交历史。git diff查看工作区和暂存区的差异。文件操作与提交git add file或git add .将文件的修改添加到暂存区Stage。git commit -m “message”将暂存区的内容提交到本地仓库创建一个新的版本记录。git restore file丢弃工作区的修改上面已介绍。远程协作git pull从远程仓库拉取更新并合并到当前分支相当于git fetchgit merge。git push将本地提交推送到远程仓库。git fetch从远程仓库下载最新的提交历史和文件但不自动合并。重点分支相关操作详解分支是 Git 的“杀手级”功能它让你能在独立的线上开发而不会影响主线。1. 查看分支# 查看所有本地分支当前所在分支前面会标有 * 号 git branch # 查看所有分支包括远程分支 git branch -a2. 创建分支分支的本质是一个指向某个提交commit的移动指针。创建分支几乎是零成本的。# 基于当前提交创建新分支 git branch new-feature # 创建并切换到新分支推荐 git switch -c new-feature # 或旧版写法 git checkout -b new-feature3. 切换分支# 切换到另一个已存在的分支 git switch other-branch4. 删除分支当某个分支的工作已经合并到主分支后通常可以删除它。# 删除已合并的分支安全删除 git branch -d branch-name # 强制删除分支即使它没有被合并也会丢失数据 git branch -D branch-name5. 合并分支这是分支流程的最终目的——将特性分支的成果整合到主分支如main或master。a) 快进合并如果目标分支如main自特性分支创建以来没有新的提交Git 会直接将main指针向前移动到特性分支的最新提交。git switch main # 先切换到主分支 git merge new-feature # 将 new-feature 分支合并进来b) 三方合并 / 生成合并提交如果目标分支有了新的提交Git 会创建一个新的“合并提交”merge commit它有两个父提交。git switch main git merge new-feature # 这会打开编辑器让你输入合并提交的信息c) 处理合并冲突当两个分支修改了同一文件的同一区域时合并会产生冲突。Git 会暂停合并并在文件中用标记出冲突内容。步骤使用git status查看冲突文件。手动编辑这些文件解决冲突删除标记保留你想要的内容。使用git add file将解决后的文件标记为已解决。使用git commit来完成合并提交。6. 变基git rebase是合并的另一种选择。它可以将一个分支的所有提交“重新播放”在另一个分支的最新提交之上从而得到一个更清晰、线性的历史。# 在 feature-branch 上执行 git switch feature-branch git rebase main作用相当于把feature-branch的根基从原来的地方拔起来接到main分支的最新提交上。与合并的区别合并保留历史原貌会产生一个合并提交历史是非线性的。变基重写历史使得历史是一条直线更整洁。黄金法则只对尚未推送到远程仓库的本地提交执行变基。不要对已共享的分支进行变基。7. 远程分支操作# 将本地分支推送到远程仓库并建立跟踪关系 git push -u origin branch-name # 之后再次推送可以简写为 git push # 跟踪并切换到远程分支本地不存在该分支时 git switch -c local-branch-name origin/remote-branch-name # 或 git checkout --track origin/remote-branch-name # 删除远程分支 git push origin --delete remote-branch-name总结checkout很强大但容易混淆建议用更清晰的switch切分支和restore恢复文件替代。Git 的核心工作流是工作区-add-暂存区-commit-本地仓库-push-远程仓库。分支是 Git 的灵魂。熟练掌握branch,switch,merge,rebase是进行高效协作开发的关键。记住合并冲突是正常的学会手动解决它们是必备技能。