每次提交,GIT 都会将他们串成一个时间线,截止到目前,只有一个时间线,GIT里叫这个分支为主分支,叫master,HEAD指向master,master指向提交,HEAD指向当前的分支.
一开始的时候,master
分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点
当我们创建新的分支,例如dev
时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上:
Git创建一个分支很快,因为除了增加一个dev
指针,改改HEAD
的指向,工作区的文件都没有任何变化!
从现在开始,对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变:
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上。Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支:
我们创建dev
分支,然后切换到dev
分支:
git checkout -b dev 加上-b参数表示创建并切换,相当于以下两条命令
git branch dev git checkout dev
修改工作区一个文件测试下,然后提交
git add test.txt
git commit -m "test"
再切回master:
git checkout master 会发现刚才修改的内容又回去了,没有发生变化,因为刚那个提交是在dev分支上,master分支此刻的提交并没有变:
合并分支到master
首先要切换到master,再执行git merge dev命令,然后就可以删除dev分支了,git branch -d dev
推送本地新建的分支到远程仓库
```
git push origin 本地分支名:远程分支名
```
从远程拉取新的分支到本地
```
git checkout -b 本地分支名 origin/远程分支名
```
删除分支推向远程
```
git push origin --delete 分支名
```