[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分⽀上⼯作效果是⼀样的,但过程更安全


相关推荐
<但凡.2 小时前
Git 完全手册:从入门到团队协作实战(4)
git·bash
SugarPPig2 小时前
Git 创建一个完全没有提交历史的 master 分支
git
lb29171 天前
git的使用,推送仓库github
git·github
躲在云朵里`1 天前
Git的使用
大数据·git·elasticsearch
悟能不能悟1 天前
在 IntelliJ IDEA 中打开这个用于设置 Git 用户名(Name)和邮箱(Email)的特定弹窗
java·git·intellij-idea
威威猫的栗子2 天前
Git 使用全指南:从配置到免密登录
大数据·git·vscode
Casia_Dominic3 天前
【tmux无法使用鼠标滚轮滚动页面的问题】解决方案
linux·git·github·tmux
Justice link3 天前
Nginx和Apache的区别
git
物联网软硬件开发-轨物科技3 天前
【轨物方案】分布式光伏电站运维升级智能化系列:老电站的数智化重生
运维·人工智能·分布式·git
Misnice3 天前
Git 常用的提交类型
git