Git首先是一个版本控制系统(version controlsystem),当然还有其他的版本控制系统,如CVS, SVN,Mercurial, Fossil等。很多你熟悉的网络服务都是使用的Git,比如GitHub和GitLab。你也可以不使用这些网络服务,建立一个私人的Git服务。
关于版本控制,我们会经常遇到,最简单的是,你把你的文章草稿发给你的导师,导师对其中的内容做了部分修改,也就是现在有两个版本的文章,当导师把修改的版本发给你后,你会整理合并两个版本,成为一个最终的版本。
但是,有时候,导师发现文章还有一些不妥之处,又在他的版本上作了修改,这个时候你发现修改的版本越来越多,合并到一起越来愈困难!所有在你的文章文件夹里面出现了:
文章初稿.docx,文章初稿1.docx,文章初稿1_修改.docx, 文章初稿1_修改1.docx, 文章初稿1_修改2.docx, 文章初稿1_修改_最终版.docx, 文章初稿1_修改_最最终版.docx,文章初稿1_修改1_死也不修改版.docx。。。。。
这个时候,版本控制系统就能够简化这些不必要的文件,让你能够很清晰的管理好各个版本的文件。
Git快照
Git对你的文件作快照,并把它们储存起来。当你在修改文件或代码的时候,发现修改思路是错的,这个时候可以返回到之前存储快照的文件状态。
每次快照,Git都使用hash加密,所以每一次对文件的小小变动,哪怕只是一个空格,也都会被Git检测到。
当你和其他人合作一起写代码的时候,你可以很轻松地把别人的代码合并到你的工程项目中,别人可以接着在这个合并的代码上继续修改。这也就是Git分支。
Git系统中的文件有三种状态:modified,staged和committed。当你修改文件时,该文件处于modified;当你使用git add命令,该文件进入staged状态,也就是将该文件加入Git,被Git追踪修改变化;最后,使用git commit命令来做快照,描述文件哪些做了改变。每一次commit就会生成一个历史版本。
[是不是感觉像区块链技术,都是采用hash加密对每一步进行确认,只是区块链是单向不可逆的,而Git是能够回到历史版本的。]
Git分布式
在不同计算机上工作是一个很棘手的问题。因为你要时刻保证当下的文件是最新的版本,同时还要能够把最新的版本分享给他人。我们常用的方式就是使用共享服务(如云盘、dropbox等)和邮箱附件。但是这两种方法都不是最好的方法,而且低效、易错。在你分享给别人之后你就不能再修改该文件,以确保别人得到的是最新版本的文件。
Git采用分布式文件管理,可以将整个远程Git库拷贝到本地,然后把它当作唯一的一个版本来处理,当别人最文件修改了之后,可以通过简单的命令获得别人的修改,你可以将自己的修改推送到远程库,供别人使用。也就是Git有一个共同的文件库,所有参与人员都是围绕着一个库来修改编辑文件的。这和集中式的文件管理不同,集中式文件管理要求必须把文件同步之后才能创建新的修改版本。
当然Git也会有出现文件冲突的时候,比如我把这本书的最后一行做了修改,而此时你却把整行给删掉了。这个时候Git会有自己的冲突处理方式,此处不再介绍。
Git的优点
1.同步工作:每一个人都可以同时对版本进行修改,而且你的修改是在本地电脑,不会影响到别人的工作。
2.快速发布:你的文件修改版本可以很轻松的推送到master主分支上,如果是写代码,通过在自己分支上测试,可以确保master分支上的代码不会有bug。
3.强大的社区支持:Git是开源的,事实上已经成为了版本控制的标准,网上有强大的社区支持,遇到困难,可以在社区中寻找到帮助。
什么时候使用?用它做什么?
在使用Git之前还要考虑一些你的文件格式。Git能够很好的处理文本格式文件,包括很多程序的源代码。而且Git的版本控制并不是备份整个版本,而是仅记录其中修改的地方,所有能够大大节省存储空间。但是如果你修改的文件含有很多的非文本文件,比如图片、视频、音频等,Git很难知道哪些地方做了修改,这个时候Git会备份整个文件,会占用较大的存储空间。不过,现在有些Git插件也能够处理这个非文本文件,如git annex和Git media等。对于我们关心的是word文件,Git同样只能比较出文件的不同,不能指出哪些地方不同。可以使用“pandoc”插件来看哪些地方不同。
======= THE END ========
https://opensource.com/resources/what-is-git
https://docs.microsoft.com/en-us/azure/devops/git/what-is-git
https://github.com/vigente/gerardus/wiki/Integrate-git-diffs-with-word-docx-files
领取专属 10元无门槛券
私享最新 技术干货