Gitbranchmanagement
Gitbranch is Gitin最强 big functions之一, 它允许你 in 不影响主线Development circumstances under , parallelDevelopment不同 functions or 修复bug. MasterGitbranchmanagement is 成 for Git high 手 关键.
1. branch concepts and 作用
branch is Git仓libraryin 一个独立 Development线, 它允许你 in 不影响otherbranch circumstances under forDevelopment工作. 每个branch都 has 自己 submittinghistory记录.
1.1 branch 作用
- parallelDevelopment: many 个Development者可以同时Development不同 functions, 互不干扰.
- functions隔离: new functions Development可以 in 独立 branch on for, 不影响主线 stable 性.
- bug修复: 可以 in 独立 branch on 修复bug, 然 after merge回主线.
- versionmanagement: 可以 for 不同 versioncreationbranch, 便于maintenance and release.
- 实验性Development: 可以 in branch on for实验性Development, 失败了可以直接deletebranch, 不会影响主线.
2. 查看branch
using git branch commands可以查看当 before 仓library 所 has branch.
3. creationbranch
using git branch commands可以creation new branch.
4. 切换branch
using git checkout commands可以切换 to 指定 branch.
Notes
in 切换branch之 before , 确保当 before branch 所 has 更改都已submitting or stage, 否则可能会导致更改loss or conflict.
5. mergebranch
using git merge commands可以将一个branch 更改merge to 当 before branch.
5.1 fast 进merge (Fast-forward Merge)
当目标branch is 当 before branch 直接祖先时, Git会执行 fast 进merge, 直接将当 before branch指针指向目标branch 最 new submitting.
5.2 三方merge (Three-way Merge)
当目标branch and 当 before branch has 不同 submittinghistory时, Git会执行三方merge, creation一个 new mergesubmitting.
6. deletebranch
using git branch -d commands可以delete已merge branch, using git branch -D commands可以强制delete未merge branch.
7. renamebranch
using git branch -m commands可以renamebranch.
8. branchmanagement策略
良 good branchmanagement策略可以improvingDevelopmentefficiency and codequality. 以 under is 几种common branchmanagement策略:
8.1 Git Flow
Git Flow is a经典 branchmanagement策略, 它定义了以 under 几种branchclass型:
- master: 主branch, 用于存放 stable code, 只用于releaseversion.
- develop: Developmentbranch, 用于集成各个functionsbranch code.
- feature/*: functionsbranch, 用于Development new functions.
- release/*: releasebranch, 用于准备releaseversion.
- hotfix/*: 热修复branch, 用于修复已releaseversion bug.
8.2 GitHub Flow
GitHub Flow is a simple branchmanagement策略, 适合continuous delivery project:
- 只 has 一个主branch
master, 始终保持可deploymentstatus. - new functionsDevelopment in 独立 branch on for.
- throughPull Requestforcode审查.
- 审查through after merge to
masterbranch. - merge after 立即deployment.
8.3 GitLab Flow
GitLab Flow is GitHub Flow scale, 结合了environmentbranch and releasebranch:
- using
masterbranchserving as主branch. - for 不同 environment (such asdev, staging, production) creationbranch.
- throughmergerequest (Merge Request) 将code from
masterbranchmerge to environmentbranch. - 可以creationreleasebranch来准备releaseversion.
9. 远程branchmanagement
远程branch is 指store in 远程仓libraryin branch, using git fetch, git push etc.commands可以management远程branch.
10. branch working principles
in Gitin, branch本质 on is 指向submitting 指针. 当你creation一个branch时, Git只 is creation了一个指向当 before submitting new 指针. 当你 in branch on forsubmitting时, branch指针会自动向 before move.
Git branch is 轻量级 , creation and 切换branch 成本很 low , 这也 is Gitbranchsuch as此强 big and flexible 原因之一.
实践case: usingbranchDevelopment new functions
- 确保当 before in
masterbranch:git checkout master - pull最 new code:
git pull - creation并切换 to new functionsbranch:
git checkout -b feature-login - in new branch on Developmentloginfunctions, for many 次submitting
- Developmentcompletion after , 切换回
masterbranch:git checkout master - pull最 new code:
git pull - mergefunctionsbranch to
masterbranch:git merge feature-login - deletefunctionsbranch:
git branch -d feature-login - pushmerge after code to 远程仓library:
git push
互动练习
请completion以 under 练习, 巩固Gitbranchmanagementoperation:
- 查看当 before 仓library 所 has branch
- creation一个名 for
feature-exercisenew branch - 切换 to new creation branch
- in new branch on creation一个 new file并submitting
- 切换回
masterbranch - 查看
masterbranch on is 否 has new creation file - 将
feature-exercisebranchmerge tomasterbranch - 再次查看
masterbranch on is 否 has new creation file - delete
feature-exercisebranch - creation一个 new branch, for一些modify, 然 after using
--no-ffparametermerge tomasterbranch
completion练习 after , 你应该able to熟练MasterGitbranch basicmanagementoperation!