Git 分支机制简介 ---Git(1)

在git 上新建一个远程空的分支用来测试,本地创建readme.txt来进行修改。提交。

$ git init

$ git status

$ git add .

$ git commit “first create readme”

$ git remote add origin https://github.com/UserNamezhangxi/testgit.git

$ git push -u origin master

 

这样就创建了一个master分支,内容如下:

 

创建分支

$ git branch testbranch

创建名为 testbranch 的分支

创建分支的时候,会创建一个指向当前提交的新指针。 Git如何知道你当前处于哪一分支上?git通过一个名为HEAD的特殊指针实现的,在git中,HEAD是一个指向当前所在的本地分支的指针

切换分支

$ git checkout testbranch

Push 当前readme.txt 文件

$ git push origin testbranch

这样当前就有两个分支了

 

$ git checkout master

切换到master分支

 

使用

$ git log --oneline --decorate

查看分支指向的对象

可以看出master 和 testbranch都是指向同一个3f4f283地址。

 

 

那么现在远程仓的状态:

如果我切换到testbranch 然后修改readme的一些内容。

切换到testbranch后,HEAD由指向master指向了testbranch,HEAD是指向当前分支的.

 

 

 

 

OK, 现在在testbranch 上修改了一下readme 的内容,提交后地址显示d158844

$ git log --oneline --decorate 看看具体记录

 

根据记录,再来画一张图:

 

切换到testbranch分支有什么意义呢?

再次提交之后testbranch分支已经向前移动,但master分支还是指向之前执行git checkout testbranch切换分支时所在的提交

我们来看看github 上readme 记录

testbranch :

 

master:

 

这样就比较明了了

 

如果我们再切换master分支,它会把HEAD指针移回到master分支,还会把我们工作目录的文件恢复到master分支指向的快照的状态,也就是第1次commit后的状态,比如第2次commit是修改了readme内容,重新恢复到没有修改readme内容的版本。

 

请注意,当你在切换分支时,工作目录的文件会被改变。如果你切换到较旧的分支,工作目录会被恢复到该分支最后一次提交的状态。但如果在当前状态下无法干净地完成恢复操作,就不允许你切换分支。比如我在testbranch分支下修改了readme文件,没有commit,就不允许切换,要求我们先提交

 

 

当然这样的提示很友好,不然你修改了大半天,不小心切了一下分支,啥都没了很悲剧。

我们切回master 分支,修改readme 并且commit提交.来一张图:

 

在第三次提交commit之后,

$ git log --oneline --decorate --graph --all 看看具体记录

 

这个时候在master 进行 Commit后,项目历史就已经产生了分叉,就是你创建了新分支testbranch,在testbranch分支上做了一次修改并提交。然后切回到主分支master做了修改并提交。这两次提交是在master和testbranch上做出的,彼此相互分离,你可以在分支间自由切换,当你准备好之后就可以合并这些修改。

 

参考链接

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值