Git 分支指南
什么是 Git 分支?
Git 分支是仓库内的独立开发线,你可以把它想象成一个单独的工作空间,在这里你可以进行修改,而不会影响主分支(或 默认分支)。分支允许开发者在不影响项目实际版本的情况下,开发新功能、修复错误或进行实验。
为什么使用分支?
分支在开发流程中提供了诸多好处:
- 隔离:将不同的任务(功能、错误修复、实验)分开。
- 协作:多个开发者可以在不同的分支上工作,而不会相互干扰。
- 安全实验:在不影响生产代码的情况下测试更改。
- 版本控制:轻松回滚或切换到项目的不同版本。
在 Git 中,默认分支通常被称为 main。然而,可以根据不同目的创建新的分支,例如:
- 功能修复(feature/new-ui):用于开发新功能。
- 修复分支(hotfix/login-fix):用于修复生产中的问题。
- 发布分支(release/v1.2.0):用于准备部署的稳定版本。
接下来,我们以下面四个主题讨论分支管理
- 创建和管理本地分支
- 合并分支
- 远程分支和分支跟踪
- 分支工作流程(功能分支、热修复和发布)
创建和管理本地分支
正如前面提到的,Git 分支允许你在不影响主代码库的情况下开发新功能、修复错误或进行实验。以下是高效创建、切换、重命名和删除分支的方法。
1.创建新分支
git branch feature/create-article
- 创建一个名为
feature/create-article
的新分支,但不会切换到该分支。 - 当你需要准备多个分支但不想立即切换时,可以使用
2.切换到分支
git checkout feature/create-article
- 切换到指定的分支、
现代替代方法:可以使用 git switch
git switch feature/create-article
- 这是
cheackout
的替代方法
3.创建并切换到新分支
git checkout -b feature/create-article-2
- 创建一个新分支并立即切换到该分支
- 通过将两条命令合并为一条,节省了时间
现代替代方法
git switch -c feature/create-article-2
4.列出所有分支
git branch
- 显示所有本地分支。当前分支会用
*
标记
feature/create-article
* feature/create-article-2main
- 这有助于 跟踪可用分支并切换到它们之间
要列出远程分支
git branch -a
5.重命名分支
git branch -m feature/create-article-2 feature/create-article-1
- 将分支 feature/create-article-2 重命名为 feature/create-article-1。
如果你已经在要重命名的分支上:
git branch -m feature/create-article-1
6.安全删除本地分支
git branch -d feature/create-article-1
- 只有当分支已经被合并到另一个分支时,才会删除该分支。
- 如果分支有未合并的更改,Git 会阻止删除,以避免数据丢失。
7.强制删除分支(危险)
git branch -D feature/create-article
- 即使分支有未合并的更改,也会删除该分支。
- 小心使用,以免丢失重要工作。
合并分支
在 Git 中,合并 是将一个分支的更改整合到另一个分支的过程。它通常用于将不同开发分支的更新合并到 main 分支。
1.将分支合并到当前分支
git merge feature/create-article
- 这会将 feature/create-article 的更改整合到你当前所在的分支。
- 如果没有冲突,Git 会自动完成合并。
在合并之前,请确保你在正确的分支上:
git checkout main
git merge feature/create-article
2.解决合并冲突
在合并过程中,如果存在冲突,Git 会暂停合并过程,并通知你冲突的文件。
编辑这些文件以解决冲突,冲突标记如下:
<<<<<<< HEAD
(当前分支的更改)
=======
(要合并分支的更改)
>>>>>>> main
- HEAD 部分代表当前分支的更改。
- ======= 以下的部分来自要合并的分支
解决冲突的步骤:
- 在文本编辑器或 VS Code 中打开冲突文件。
- 手动编辑并保留正确的代码版本。
- 标记文件为已解决:
git add .
- 通过提交完成合并:
git commit -m "解决冲突文件。"
要放弃合并并返回到之前的状态:
git merge --abort
Git 合并类型
Git 根据分支是否分叉支持不同的合并策略。
1.快速前进合并(无分叉)
当要合并的分支领先于当前分支且当前分支没有任何更改时,会发生快速前进合并。
Git 会将分支指针向前移动,而不是创建合并提交。
示例
git checkout main
git merge feature/create-article
- 当 main 自从 feature/create-article 分支创建以来没有更改时,这会生效。
Updating 5a26f39..db14708
Fast-forwardfilename.txt | 1 +1 file changed, 1 insertion(+)create mode 100644 filename.txt
2.三方合并(分叉分支)
当两个分支有不同的历史且无法快速前进时,会发生三方合并。
Git 会创建一个新的合并提交来合并更改。
git checkout main
git merge feature/create-article
你会看到类似以下的提交信息:
Merge branch 'feature/create-article' into main
远程分支和分支跟踪
远程分支是存储在远程仓库(GitHub、GitLab、Bitbucket)中的分支版本。
这些分支允许多个开发者通过保持本地仓库与远程仓库同步进行协作。
为什么使用远程分支?
- 通过推送和拉取更改与其他开发者协作
- 在中央仓库中备份工作
- 管理不同环境(main、dev、staging)
1.列出远程分支
要查看远程仓库中存储的所有分支:
git branch -r
- 这只会列出远程分支,以 origin/ 为前缀。
要列出本地和远程分支:
git branch -a
- 这有助于检查哪些分支在本地和远程存在。
2.创建跟踪远程分支的本地分支
如果你想在本地使用远程分支,可以使用以下命令:
git checkout --track origin/dev
- 这会创建一个本地分支,自动跟踪远程分支。
返回结果如下
分支 'dev' 设置为跟踪 'origin/dev'。
切换到新分支 'dev'
- 当 Git 没有自动跟踪分支时,这非常有用。
3.跟新远程分支
从远程仓库获取更新,确保你拥有最新的分支列表:
git fetch
- 这会下载远程更改,但不会将它们应用到你的工作目录。
4.将远程分支的更改合并到当前分支
要将远程分支的最新更新拉取到你的本地分支:
git pull origin main
这相当于运行以下命令:
git fetch
git merge origin/main
如果分支已经跟踪 origin/<分支名>,你可以直接运行:
git pull
- 如果发生冲突,请手动解决冲突并提交更改。
5.将新的本地分支推送到远程仓库
在本地创建新分支后,将其推送到远程仓库:
git push --set-upstream origin de
- –set-upstream 标志设置了跟踪,这样未来的 git pull 和 git push 命令就可以在不指定远程分支的情况下运行。
6.删除远程分支
如果远程分支不再需要,可以使用以下命令删除:
git push origin --delete dev
- 这会从远程仓库中删除 origin/dev。
要删除本地对已删除远程分支的引用:
git remote prune origin
分支工作流程(功能分支、热修复和发布)
本指南概述了使用 Git 分支进行功能开发、热修复和发布的典型工作流程。
目标是展示如何部署版本、修复错误并推出新功能。
1.功能分支
功能分支允许你在不影响主代码库的情况下独立开发新功能。
最好创建并明确指定这些功能分支。
git checkout -b feature/create-article
- 在功能分支上进行开发并提交更改,随着进度定期提交。
- 将功能分支合并到 main 或 dev 分支。
git checkout dev
git merge feature/create-article
2.热修复分支
热修复用于在生产环境中紧急修复错误,通常基于 main 分支。
- 从 dev 分支创建新的热修复分支:
git checkout -b hotfix/main-article dev
- 在热修复分支上进行修复并提交。
- 将热修复分支合并到 main 分支:
git checkout dev
git merge hotfix/main-article dev
3.发布分支
发布分支用于准备软件的新版本以供生产使用。它们允许进行测试和版本管理。
- 从 dev 分支创建新的发布分支:发布分支应基于 dev 分支,以包含所有新功能。
git checkout -b release/1.0.0 dev
- 进行测试和准备发布,根据需要提交更改。
- 将发布分支合并到 main 分支并标记发布版本。
git checkout main
git merge release/1.0.0
git tag -a v1.0.0 -m "Release 1.0.0"
- 为确保在发布过程中所做的最终更改能够合并回 dev 分支,请执行以下操作:
git checkout dev
git merge release/1.0.0
以上就是关于 Git 分支的完整指南,涵盖了从基础概念到实际操作的各个方面。通过合理使用分支,你可以更高效地管理代码开发流程,无论是开发新功能、修复紧急问题,还是准备版本发布,分支都能提供强大的支持。