Git - Git分支管理

目录

Git分支管理

Git 的默认分支就是 master。你所作的commit会在master分支上自动移动。 在多次提交操作之后,master分支指向最后那个commit object(提交对象链)。

分支创建

通过git branch来查看和创建分支。

创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)

  1. 查看当前分支

    git 复制代码
    git branch
  2. 分支创建

    git 复制代码
    git branch dev
  3. 分支切换

    git 复制代码
    git checkout dev
  4. 分支创建并切换同时完成

    git 复制代码
    git checkout -b dev2
  5. 分支最近切换

    git 复制代码
    git checkout -

多个分支共享版本跟踪

  1. 在dev2分支中创建一个文件z.txt,三个分支下都可以追踪到z.txt文件
  2. 在dev分支中,将z.txt文件添加,三个分支下都可以追踪到z.txt文件
  3. 在dev分支中,将z.txt文件提交,只有dev分支下有z.txt文件,其它两个分支下没有

分支合并

  1. 基于上面的例子,切换到master上做dev的合并,合并后,就会发现master分支下也出现了z.txt文件。

    git 复制代码
    git merge dev
  2. 文件进行修改

    • 切换到dev分支上,将z.txt文件进行修改
    • 切换回master分支,会提示z.txt文件进行了修改

分支删除

  1. 不能删除自己所在的分支
  2. 可以切换到master删除一个合并后的或者没有发生变化的分支
  3. 如果一个分支发生了变化,不能删除。
    如果要强制删除可以git branch -D dev2

分支的本质

master指向的是提交

HEAD是指向当前的分支,当前在哪个分支就指向哪个分支

第二张图上我们可以看到创建了dev的分支,当我们切换到dev分支的时候HEAD就会指向dev

当我们进入.git文件夹查看HEAD的内容的时候可以看到,所处分支不同内部的文件指向就不同。

  • master分支cat .git/HEAD
  • dev分支

    如果dev发生修改提交,dev的版本就会向后移动。

    在master分支上如果合并就会出现下面的图

分支的冲突

  1. 在dev中修改z.txt文件,并提交
  2. 切换回master中,修改z.txt文件,并提交
  3. 合并时,会发现冲突
git 复制代码
<<<<<<<<<<<HEAD是当前指向的分支所修改
>>>>>>>>>>dev是dev分支修改
  1. 我们需要手工合并。

  2. 可以通过图形来查看冲突的提交日志。

    git 复制代码
    git log --graph

分支管理策略

git 的分支整体预览图如下:

从上图可以看到主要包含下面几个分支:

master:git默认主分支(这里不作操作)。

stable:稳定分支,替代master,主要用来版本发布。

develop:日常开发分支,该分支正常保存了开发的最新代码。

feature:具体的功能开发分支,只与 develop 分支交互。

release:release 分支可以认为是 stable分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release分支,测试没有问题并且到了发布日期就合并到 stable分支,进行发布。

bugfix:线上 bug 修复分支。

相关推荐
深紫色的三北六号3 小时前
基于 Git 某个分支创建一个全新的仓库(GitHub / GitLab)
git·gitlab·github
-拟墨画扇-5 小时前
Git | 标签操作
git·gitee·github·gitcode
狂龙骄子5 小时前
使用git filter-branch命令修改历史提交
git·filter-branch·迁移仓库历史·所有权转移·修改历史提交
C2X5 小时前
关于Git Graph展示图的理解
前端·git
CryptoRzz5 小时前
StockTV API 对接全攻略(股票、期货、IPO)
java·javascript·git·web3·区块链·github
-拟墨画扇-6 小时前
Git | 远程仓库操作
git·gitee·github
NuageL7 小时前
第一次用Git协作流程记录和踩坑
git
特级业务专家9 小时前
这下发布不需要Jenkins了
linux·git·docker
0和1的舞者9 小时前
Git 实战踩坑:如何让多个 IDE 项目共用一个远程仓库(附子模块问题解决)
git·开发·仓库·码云·子模块·操作·冲突
妖孽白YoonA11 小时前
Git Worktree:同时处理多个分支的正确姿势
git