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 修复分支。

相关推荐
R²AIN SUITE2 小时前
项目管理平台怎么和OA、钉钉、飞书、Git仓库打通?从消息通知到双向同步的5种实现路径
git·钉钉·飞书
Demons_kirit14 小时前
CTFHub 信息泄露通关笔记:Git泄露 Log - 教程
笔记·git·网络安全
鬼手点金21 小时前
构建有效 Agent 的核心原则
java·人工智能·git·学习·自动化
索西引擎1 天前
Git 大文件阻断推送的成因与历史重写修复
git
csdn2015_1 天前
git 合并分支
大数据·git·elasticsearch
9144062321 天前
mac Git 账户切换问题
git·macos
留岁1 天前
Git 命令行学习记录
git·学习·elasticsearch
笨笨饿1 天前
#142_VS Code.map文件插件的用法
git·python·stm32·单片机·嵌入式硬件·物联网·vim
鬼手点金1 天前
如何选择模型
java·前端·人工智能·git·深度学习
余槐i1 天前
Claude Code Skills 放对目录却不生效:插件启用顺序与缓存的三个坑
git·开发工具·ai agent·mcp·claude code