1.git简介

本教程只会让你成为Git用户,不会让你成为Git专家。很多Git命令只有那些专家才明白(事实上我也不明白,因为我不是Git专家),但我保证这些命令可能你一辈子都不会用到。

既然Git是一个工具,就没必要把时间浪费在那些“高级”但几乎永远不会用到的命令上。一旦你真的非用不可了,到时候再自行Google或者请教专家也未迟。

 

git简介

原始版本控制:

用Word写长篇大论:

1.当想删除一个段落,又怕将来想恢复找不回来怎么办?

办法:先把当前文件“另存为”一个新的Word文件,再接着改,改到一定程度,再“另存为”一个新文件……

缺点:想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找。

2.有些部分需要你的同事帮助填写,于是你把文件Copy给她,你继续修改Word文件。当同事再把Word文件传给你,你要考虑发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。

如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

版本文件名用户说明日期
1 service.doc 张三 删除了软件服务条款5 7/12 10:38
2 service.doc 张三 增加了License人数限制 7/12 18:09
3 service.doc 李四 财务部门调整了合同金额 7/13 9:51
4 service.doc 张三 延长了免费升级周期 7/14 15:17

 

集中式vs分布式

集中式版本控制系统,版本库是集中存放在中央服务器的,要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。

集中式版本控制系统最大的毛病就是必须联网才能工作。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。

既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

电脑网络中,一个网站的镜像是指对一个网站内容的拷贝。镜像通常用于为相同信息内容提供不同的源,特别是在下载量大的时候提供了一种可靠的网络连接。

镜像可算是为主站作的后备措施。有了镜像网站的好处是:如果不能对主站作正常访问(如某个服务器死掉或出了意外),但仍能通过其它服务器正常浏览。

最常见的当属镜象站点(Mirror Sites)。通过复制网站或网页的内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引。大多数搜索引擎都提供有能够检测镜象站点的适当的过滤系统,一旦发觉镜象站点,则源站点和镜象站点都会被从索引数据库中删除。

镜像站点是通过主服务器增加转移存储地址来实现信息的异地备份。通常一个镜像会定期访问主网站,以更新其内容。

创建版本库

什么是版本库(仓库,repository)呢?你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1.选择合适位置,创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

2.通过git init把这个目录变成Git可管理的仓库
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
#当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,不要手动修改这个目录里面的文件,容易把Git仓库给破坏了。

 

把文件添加到版本库

1.所有的版本控制系统(Git也不例外),其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。
2.图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统没法知道。
3.Microsoft的Word格式是二进制格式,git是没法跟踪Word文件的改动的,如果要真正使用版本控制系统,就要以纯文本方式编写文件。
4.因为文本是有编码的,比如中文有常用的GBK编码,但强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

1.编写一个readme.txt文件,一定要放在learngit目录下(子目录也行)。

2.把一个文件放到Git仓库只需要两步。

$ git add readme.txt #用命令git add告诉Git,把文件添加到仓库
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
#用命令git commit告诉Git,把文件提交到仓库
#-m后面输入的是本次提交的说明,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
#git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);
                  2 insertions:插入了两行内容(readme.txt有两行内容)。

 

  为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

 

小结

现在总结一下今天学的两点内容:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。

 

posted on 2019-02-25 19:07  wzc521  阅读(152)  评论(0)    收藏  举报

导航