Git分支管理

Git分支管理

time will tell Lv4

简介

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。
使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

git所有分支之间彼此互不干扰,各自完成各自的工作和内容。可以在分支使用完后合并到总分支(原分支) 上,安全、便捷、不影响其他分支工作

Git 分支实际上是指向更改快照的指针。

查看当前工作在那个分支

1
2
3
git branch
# 返回
# * master

可以看到当前的分支叫 "master"

master分支

从项目创建之初,有且唯一的分支就是主分支。如果之后再创建分支,就是一个一个的从分支,主分支被叫做master

Git 的 master 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。

对一个项目提交了很多个分支,如果有两个分支指向相同提交历史,Git 又是怎么知道当前在哪一个分支上呢?
它有一个名为 HEAD 的特殊指针。 请注意它和许多其它版本控制系统(如 Subversion 或 CVS)里的 HEAD 概念完全不同。 在 Git 中,它是一个指针,指向当前所在的本地分支(译注:将 HEAD 想象为当前分支的别名)。

而HEAD所指向的直接关系是当前分支,再找到分支的版本。如下图:
分支图

创建新分支

概念解释

git创建新分支。即在当前位置创建一个指针,比如起名为 从分支dev,然后将HEAD指向dev。如下图:
1.分支创建好后的提交都是在dev分支上提交,而之前的总提交master分支的提交位置停留在创建从分支dev的位置。而HEAD会跟随新创建的分支,跟随每一次提交不停的先前移动。保持HEAD指针的在提交的最前沿。
2.在master上新创建的dev分支会继承master分支的所有提交,通过 git log 可以看出来。

操作

1
2
3
4
5
6
# 创建并切换到dev分支
git checkout -b dev
#创建分支
git branch (branchname)
#切换分支
git checkout (branchname)

此时就会有两个分支,并且指向 dev分支
dev

提交分支

dev分支工作完成,需要合并到master分支的时候,也只是将master指针指向当前dev的位置,并将HEAD指向master,这时dev分支可以直接删除,也可以不删除,删除的话也只是移除了dev指针,只留下一个master指针,对工作区没有任何的影响,也就是曾经做的所有提交操作都不会有影响。
ijfz

切换回主分支

1
2
# 分支切换回主分支master
git checkout master

合并分支

当分支切换回主分支的时候,可以将dev的修改提交合并到master分支上,使用:

1
2
# 合并dev到master
git merge dev

这一次的合并称之为快速合并 fast-forward。只是将master的指针指向了dev最后一次提交的位置。
当分支切换回主分支master的时候,就可以删除dev分支使用:

1
2
3
# 删除dev分支
git branch -d dev
git branch -d (branchname)
  • Title: Git分支管理
  • Author: time will tell
  • Created at : 2024-09-24 20:54:52
  • Updated at : 2024-07-30 17:45:59
  • Link: https://sbwrn.github.io/2024/09/24/git分支管理/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments