[Git][分支管理][上]详细讲解

目录


1.理解分支

  • 感性理解 :分支可以理解为平行宇宙 ,但是在用户需要的时候,可以将两个平行宇宙合并 ,此时两个平行宇宙的效果将会"叠加"
  • 理性理解 :每次提交,Git都会把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀
    • 截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀
  • HEAD理解HEAD严格来说不是指向提交,⽽是指向mastermaster才是指向提交的
    • 所以HEAD指向的就是当前分⽀
    • 每次提交,master分⽀都会向前移动⼀步
      • 随着用户不断提交,master分⽀的线也越来越⻓
      • HEAD只要⼀直指向master分⽀即可指向当前分⽀

2.创建分支

  • 查看分支git branch

    • *表示当前HEAD指向的分支
    plaintext 复制代码
    $ git branch
    * master
  • 创建分支git branch branch_name

    • 创建好分支之后,Git将会新创建一个指针
    • 此时新创建的指针和master指向同一个修改,即同一个版本
    plaintext 复制代码
    $ git branch dev
    $ git branch
      dev
    * master

3.切换分支

  • 切换分支git checkout branch_name

  • 将创建分支和切换分支合二为一的命令git checkout -b branch_name

    plaintext 复制代码
    $ git checkout dev
    Switched to branch 'dev'
    
    $ git branch
    * dev
      master
  • 切换到新的分支后,如果进行独立于的master分支的修改,并进行提交

    • 现象 :新的分支有的内容,在master分支里并不存在

    • 原因 :两分支指向的提交已经不一样了

      plaintext 复制代码
      $ cat .git/refs/heads/master
      13204498006394d6067fbc8b6046885c6e5e9649
      $ cat .git/refs/heads/dev
      8ef34a28afd16a7c6f3ad43f136212850205bb22

4.合并分支

  • 如果要在master分支上能看到最新的提交,就需要将新的分支合并到master分支

  • 合并分支git merge branch_name

    • 此处的Fast-forward表示快进模式
      • :直接将master指向新分支的当前提交,所以该种合并方式下速度非常快
    • 但并不是每次合并都能Fast-forward
    plaintext 复制代码
    $ git branch
      dev
    * master
    $ git merge dev
    Updating 1320449..8ef34a2
    Fast-forward
     dev.txt | 1 +
     1 file changed, 1 insertion(+)
     create mode 100644 dev.txt

5.删除分支

  • 合并完成后,dev分⽀对于用户来说就没⽤了,那么dev分⽀就可以被删除掉

  • 删除分支git branch -d branch_name

    • 注意 :如果当前正处于某分⽀下,就不能删除当前分⽀,需要切换到其他分支再删除
  • 因为创建、合并和删除分⽀⾮常快,所以Git⿎励用户使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全


相关推荐
江木1232 小时前
Git常用命令(记录)
git
程序猿看视界5 小时前
Halo 开发者指南——项目运行、构建
git·docker·node.js·pnpm·idea·openjdk·halo
俊昭喜喜里5 小时前
Git学习笔记
笔记·git·学习
好想有猫猫7 小时前
【Git】常见命令(仅笔记)
linux·c++·笔记·git·elasticsearch
阿东日志12 小时前
实习期间git的分枝管理以及最常用的命令
git·面试·实习
冰淇淋烤布蕾15 小时前
git 你要如何打开这个文件
git·vscode·intellij-idea
qq_4269384816 小时前
git-fork操作指南
git·python
珊珊而川17 小时前
撤回仓库的提交
git
aabbccQBB20 小时前
前端开发macbook——NVM环境配置以及git配置流程
前端·git
神州永泰1 天前
Gitlab及Git使用说明
git·elasticsearch·gitlab