什么是Git

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,stagedcommitted。当你修改文件时,该文件处于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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G0VTIE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励