Git分布式版本控制工具原理及常用命令总结

Git分布式版本控制工具原理及常用命令总结,第1张

推荐网易云课堂上一门好课,Git&Github视频教程,在此简单记录学习过程。

Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。 

Git的功能特性:

从一般开发者的角度来看,git有以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

Git结构如下图所示:

 团队协作开发方式示意图:

跨团队协作开发方式示意图: 

  常用命令如下: 

git status:查看工作区/暂存区状态
git add[file name]:将工作区的“修改和新建”添加到暂存区
git commit -m "commit message" [file name]:将暂存区的内容提交到本地库

cat [file name]:查看文件内容,猫一眼~
git log:查看日志
git log --pretty=oneline:以一行显示查看日志
git log --oneline:哈希值缩短显示查看日志
git reflog:显示指针移动步数查看日志


 HEAD指针可以移动当前版本,前进和回退

git reset --hard [版本局部索引值],索引值可以通过git reflog 获得
git reset --hard HEAD^:往后退一个版本,^^就退两步
git reset --hard HEAD~3:往后退三个版本

  删除文件后找回:删除前如果文件存在时候的状态提交到了本地库就可以找回

rm [file name]:删除文件

git diff [file name]:和工作区中的文件和暂存区中的文件进行比较
git diff [本地库历史版本][文件名]:将工作区中的文件和本地历史记录比较

 分支管理:在版本控制过程中使用多条线同时推进多个任务。

分支好处:同时并行推进多个功能开发,提高效率。

git branch[分支名]:创建分支
git branch –v:查看分支
git checkout [分支名]:切换分支
合并分支
1.	切换到接受修改的分支(被合并,增加新内容)
git checkout[被合并分支名]
2.	执行merge命令
git merge[有新内容的分支]

  分支管理示意图如下:

Git基本原理

哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  • 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
  • 哈希算法确定,输入数据确定,输出数据能够保证不变
  • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
  • 哈希算法不可逆Git底层采用的是SHA-1算法。

Git把数据看作是小型文件系统的一组快照。每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。哈希算法可以被用来验证文件。原理如下图所示:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/893696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存