Git 学习笔记之开发分支管理

本文介绍了Git中的分支(branch)和标签(tag)管理方法,包括创建、切换、合并、删除分支及标签的操作步骤,并提出了一套实用的分支管理策略。

Git Branch

分支管理的目的
  • 当项目多人开发时,每一个人开发的新功能需要创建自己的分支,将代码或者版本提交到开发分支下,等该功能稳定再与主分支合并,从而不影响主版本的使用。
  • 分支本质上其实就是一个指向某次提交的可变指针。Git 的默认分支名字为 master 。而我们是怎么知道当前处于哪个分支当中呢?答案就是在于 HEAD 这个十分特殊的指针,它专门用于指向于本地分支中的当前分支
  • HEAD就 是指向于本地分支中的当前分支
分支管理的常见操作
$ git branch -a #查看当前所有分支,HEAD指针默认指向master

$ git branch dev #创建新的开发分支
$ git checkout dev #切换到dev分支,可以看到*已经指向dev,此时可以提交新的功能代码
# 或者使用下面的命令
$ git checkout -b <branch_name>  #创建并切换分支

$ git add readme.md # 添加readme
$ git commit -m "readme"
$ git push origin dev # push 到远程

# 当功能各方面完善,则可以合并到主分支,供其他开发人员使用
$ git checkout master # 第1步,先切换主分支
$ git pull origin master # 第2步,合并之前先同步远程主分支的修改 git fetch
$ git merge dev # 第3步,将dev分支的开发成果合并到本地主分支
$ git push origin master # 第4步,将推送合并后的主分支到远程仓库

# 删除分支的命令在master下执行
$ git branch -d dev #若不需要该分支,删除本地的开发分支dev
$ git push origin --delete dev # 删除远程开发分支dev

# 重命名某开发分支
# 当不在old branch 时,执行 git branch -m newName, 否则执行下面一句
$ git branch -m oldName newName
# 上传新分支
$ git push origin newName
# 删除远程旧分支
$ git push --delete origin oldName
# 切换到新分支后,关联操作后的本地分支与远程分支
git branch --set-upstream
分支管理策略
  • 主分支 master
    • 代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
  • 开发分支 develop
    • 主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop
  • 功能分支 feature
    • 功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。
  • 预发布分支 release
    • 预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。预发布分支是从Develop分支上面 分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。
  • bug 分支 fixbug
    • bug分支。软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。
  • 其它分支 other

Git Tag

  • 原文:https://blog.youkuaiyun.com/hellokandy/article/details/84553353

  • 用于版本管理,通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

  • 简单理解:标签是某个版本的别名,因为Git的版本号都是用一串字母数字组成,为了便于管理,Git 可以给版本取个别名(也就是打上标签,比如标签的名字叫做 v1.0.0)。

  • # 切换到需要打标签的版本
    $ git checkout master
    #创建标签
    $ git tag -a v1.4.0 -m 'my version 1.4.0' 
    $ git show v1.4.0 #查看当前版本的信息
    #查看所有标签
    $ git tag 
    ## 注意,默认标签是打在最新提交的commit上的
    
    # 如果需要对过去的提交的版本打上标签,怎么操作?
    # 方法是找到历史提交的commit id(命令如下),然后打上就可以了.
    $ git log --pretty=oneline --abbrev-commit
    
    #如果标签打错了,也可以删除,前提是没有推送远程,则可以本地进行删除
    $ git tag -d v1.4.0#删除标签
    
    # 推送标签至远程
    $ git push origin v1.4.0#推送标签<tagname>
    $ git push origin master --tags #将本地标签推送到远程master分支
    
    #删除远程标签
    #如果标签已经推送到远程,要删除远程标签就麻烦一点,
    $ git tag -d <tagname> #第一步,先本地删除
    $ git push origin --delete tag <tagname> #然后再从远程删除
    
    
  • 总结

    $ git tag <tagname> 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    $ git tag -a <tagname> -m "this is memeo" 可以指定标签信息;
    $ git tag 可以查看所有标签。
    $ git log --pretty=oneline --abbrev-commit 找到历史提交的commit id
    $ git tag -d <tagname> 删除标签
    $ git push origin --delete tag <tagname> 可以删除一个远程标签。
    # tag重命名,rename
    $ git tag newtag oldtag 
    $ git tag -d oldtag
    $ git push origin :refs/tags/oldtag
    $ git push --tags
    
<think>好的,用户想学习Git分支管理的相关知识,包括教程和最佳实践。首先,我需要整理Git分支管理的基础概念,然后根据提供的引用内容,总结常见的分支策略和最佳实践。用户可能对不同的分支模型(如Git Flow、GitHub Flow等)感兴趣,需要逐一解释它们的特点和适用场景。同时,结合引用中的信息,比如引用1提到的五种分支策略,引用3和4中的具体操作步骤,以及引用5的最佳实践,我需要将这些内容结构化,以清晰易懂的方式呈现。还要注意用户可能的需求,比如如何选择合适的分支策略,常用命令有哪些,以及如何解决实际开发中的问题(如修复bug时的分支管理)。最后,生成相关问题帮助用户进一步学习,确保回答覆盖了用户可能关心的各个方面。</think>### Git分支管理学习教程与最佳实践 #### 一、Git分支基础概念 1. **分支的本质** Git分支本质是一个指向提交对象的**可变指针**,与SVN等工具不同,Git分支创建和切换成本极低[^4]。 2. **默认分支** `master`(或`main`)分支是默认创建的主分支,但无特殊性质,与其他分支完全平等[^2]。 #### 二、常见分支管理策略 1. **Git Flow** - 特点:严格定义开发、发布、热修复流程 - 分支结构: ``` master(生产环境) ├── develop(集成分支) │ ├── feature/*(功能开发分支) │ └── release/*(预发布分支) └── hotfix/*(紧急修复分支) ``` - 适用:需要长期维护的复杂项目[^1] 2. **GitHub Flow** - 特点:简化流程,强调持续部署 - 规则: - 所有开发基于`master`分支 - 通过Pull Request进行代码审查 - 合并后立即部署 - 适用:SaaS类快速迭代项目[^1] 3. **Trunk-Based Development** - 特点:所有开发者直接向`master`提交代码 - 关键实践: - 短生命周期分支(1-2天) - 特性开关控制功能发布 - 适用:高成熟度团队与CI/CD深度集成项目 #### 三、最佳实践指南 1. **分支命名规范** - 功能分支:`feature/login-page` - 修复分支:`hotfix/payment-bug` - 发布分支:`release/v2.1.0` 2. **工作区管理技巧** ```bash # 临时保存未完成的工作(引用3示例) git stash git checkout master git checkout -b hotfix/xxx # 修复完成后恢复工作区 git stash pop ``` 3. **二进制文件处理** - 使用`git diff --numstat`检测二进制文件变更[^5] 4. **第三方库管理** - 建议通过子模块(submodule)或包管理器独立管理[^5] #### 四、常用命令速查 | 操作场景 | 命令示例 | |-------------------------|-----------------------------------| | 创建分支 | `git branch feature/new-api` | | 切换分支 | `git checkout develop` | | 合并分支(无冲突) | `git merge feature/login` | | 删除已合并分支 | `git branch -d feature/old` | | 查看分支图 | `git log --graph --oneline --all`| #### 五、策略选择建议 1. **初创团队** → GitHub Flow 2. **传统软件** → Git Flow 3. **微服务架构** → Trunk-Based Development 4. **紧急修复** → 单独创建`hotfix`分支[^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值