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

目录


1.理解分支

  • 感性理解 :分支可以理解为平行宇宙 ,但是在用户需要的时候,可以将两个平行宇宙合并 ,此时两个平行宇宙的效果将会"叠加"
  • 理性理解 :每次提交,Git都会把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀
    • 截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀
  • HEAD理解 :HEAD严格来说不是指向提交,⽽是指向master,master才是指向提交的
    • 所以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分⽀上⼯作效果是⼀样的,但过程更安全


相关推荐
高调的涵涵1 天前
删了1.2GB,.git仍是1.2GB
git
程序员沉梦听雨1 天前
【Git】git-submodule子模块管理
git
全栈陈序员2 天前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
7177772 天前
Git自建用什么工具比较好:Gitea、Forgejo、GitLab CE与Gitee的选型对比
git·gitlab·gitea
lsc_blog3 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员3 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员3 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员4 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员4 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚4 天前
Ansible 13 个常用模块---企业实战
git·github