Git从原理到解决冲突

  1. 浅谈原理
    首先说一下git是怎么样保存数据的。

    git通过保存快照的方式保存着数据,计算机储存结构类似TCP/IP一样的栈结构,有兴趣的可以更多的去看一下网络的七层协议。应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。快照的储存栈分为四部分,应用层、文件系统层、卷管理层、物理层。
    git仓库中保存着五个对象,分别是两个树对象和三个blob对象。

    两个树对象分别是,提交信息对象树,这个树对象中主要保存了提交信息和另一个数对象的索引。第二个树对象主要记录这三个blob对象索引值和目录结构。

这里写图片描述
commit树主要是保存了一个指针和个人信息,指针会指向对应的blob树,而在blob树中的指针又会指向每一个blob对象。

2.remote->repository->workspace
这里写图片描述

remote(远程仓库)
repository(本地仓库)
workspace(开发工作区)
Index(缓存区)
对应这张图可以知道 pull,fetch,checkout,push,commit,add的多个命令怎么进行操作了。
这里写图片描述

3.分支开发到解决冲突
这里写图片描述
在GitHub上新建了一个新项目叫gitTest,先clone下来。
这里写图片描述
里面只有一个README.md文件,进行简单的修改。
这里写图片描述

这里写图片描述

git add .
git commit -m '修改readme文件'
git push

可以看到当前在maste分支上,进行add操作后在进行commit。这样就在master分支上把README.md文件修改成功。

切换分支

git checkout test

切到test分支,再对README.md文件进行修改操作。
这里写图片描述

这时候再进行合并操作

git merge master

这里写图片描述
发生了冲突,这时候git会把两个分支上的README.md文件自动的merge。此时再打开README文件可以看到
这里写图片描述
HEAD后面是当前分支的变化,master就是代表发生冲突的分支名。这时候就需要我们在这个基础上进行手动修改,删除冲突的部分,保留需要的部分提交。
这里写图片描述

这就是完美的解决了一次冲突。不过这是命令行解决的,还是比较麻烦,也可以去用图形化工具去解决冲突,比如IDE中自带的git工具也是很好用。window用户可以继续沿用svn的小乌龟工具,是有git版本的。都是解决冲突很好的方法。

4.分支规范及发布
在实际开发规范中,会有三条主要的开发分支,分别是dev,test,master。而在比较大的分支开发中会有跟多的分支和相应的分支规范。可能会多出预发布分支(release)、备份分支和紧急bug分支。这些都是各自的公司去制定规范去实施的。

5.git相关配置
(1).gitignore文件相关
在svn中是可以设置ignore的文件的,而在git中就更偏向于开发了。
这里写图片描述
文件是可以设置不在git仓库中上传的文件的。*表示全部,还有其他的具体文件。

6.了解更多
git还有很多很炫的使用,比如在文档中有git的钩子,git是用C编写的,理解C的指针概念就会上手git起来会比较快。目前楼主在了解git + jekins + docker自动化部署环境和持续交付,有兴趣的可以一起。

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值