Git-分支操作

  • 什么是分支?
    • 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
      分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
      候,不会影响主线分支的运行。
  • 分支的优点?
    • 同时并行推进多个功能开发,提高效率。各个分支在开发过程中,如果某一失败 不会对其他有任何影响。

分支的基本操作

  1. 查看分支

    1
    git branch -v
  2. 创建分支

    1
    git branch <分支名>
  3. 切换分支,移动head指针,.git/HEAD文件显示当前分支

    1
    2
    git checkout <分支名>
    git switch <分支名> # 新版本Git提供switch命令切换分支
  4. 创建分支并立即移动到新分支下

    1
    2
    git checkout -b <分支名>
    git switch -c <分支名> # 新版本
  5. 删除分支

    1
    git branch -d <分支名>
  6. 合并分支

    1
    git merge <被合并的分支名>		# 自动合并
    • 合并冲突(Merge conflict):当两个分支在文件同一个位置有不同的修改时,Git无法自动合并分支,需要认为决定新代码内容
      1. 此时需要手动打开文件,并决定哪行需要保留
      2. 然后添加到暂存区git add <文件名>
      3. 之后提交修改git commit -m "<备注>"
        • !!!此处git commit不能带文件名
  7. Fast forward模式:当前分支合并另一个分支的时候如果没有冲突,就直接移动两个分支指针来达到合并的过程,合并后会删除无用的分支, 这种情况下会丢掉分支的所有信息,Fast forward默认是开启的

    • 强制禁用Fast forward模式后,会在merge时生成一个新的commit,不会丢失分支信息

      1
      git merge --no-ff -m "<备注>" <被合并的分支名>
      • --no-ff,禁用Fast forward
      • -m,合并时创建一个新的commit
  • 一些个人理解
    • Git在当前位置创建分支时,就是新建一个指针
    • 切换分支时就是将HEAD指针指向目标分支的指针
    • 把新分支合并到旧分支时,先将HEAD指针指向旧分支,然后将新分支指向的内容向HEAD指针提交
    • 删除分支就是把新分支的指针删除

参考资料