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


相关推荐
high201110 小时前
【Git】-- 版本说明
git
kaixin_learn_qt_ing11 小时前
git clone
git
sin220111 小时前
git stash
git
喝鸡汤11 小时前
一起学Git【第二节:创建版本库】
git
慢慢成长的码农11 小时前
git 同步分支操作
git
sin220111 小时前
git推送本地仓库到远程(Gitee)
git·gitee
丁总学Java13 小时前
git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
git
yylの博客16 小时前
Windows通过git-bash安装zsh
windows·git·bash·zsh
丁总学Java16 小时前
(Z Shell)zsh: no matches found: ? 使用单引号包裹
git·zsh
萌狼蓝天17 小时前
【NAS】绿联NAS+极狐Gitlab+1Panel
git