从本次总结开始,有三次总结(总结(二),总结(三),总结(四))来简要介绍下Git的使用。可以将这三部分内容与我之前写的“Git的简单使用技巧“相结合,以了解和掌握对的混帐的常用命令和技巧的使用参考网址是:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000。
简介Git
GIT中是目前世界上最先进的分布式版本控制系统(没有之一)。
(1)历史
在GIT中之前,有集中式版本控制系统,如CVS和SVN缺点在于:。速度慢;联网必须使用才能后来,莱纳斯花了两周时间自己用Ç写了一个分布式版本控制系统,这就是GIT中!2008年,GitHub上的网站上线了。
(2)集中式与分布式的对比
集中式:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。必须联网才能工作。
分布式:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时。 ,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。安全性比集中式高,因为若“中央处理器”出了问题就没法工作了。
(3)安装GIT中
在Linux,Mac OS X,windows上安装GIt。详见网址。
安装后点开Git-> Git Bash来进行接下来的操作。
(4)创建版本库
版本库又称仓库,即库。你可以简单理解成一个目录,这个目录里面的所有文件都可以被GIT中的管理起来,每个文件的修改,删除,混帐都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
注:1)不一定必须在空目录下创建GIT中仓库,选择一个已经有东西的目录也是可以的。
2)所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,GIT中也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词的“Linux的”,在第8行删了一个单词“窗口”。而图片,视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。其中,微软的Word中中是二进制的格式,因而无法跟踪记录改变。
初始化一个混帐的仓库,使用git init
命令。
把文件放到仓库的步骤:1)用命令git add
告诉GIT中,把文件添加到仓库,可以多次使用以添加多个文件;
2)用命令git commit
告诉GIT中,把文件提交到仓库比如:
$ git commit -m "wrote a readme file"
关于git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
时光穿梭机
使用git status了解工作区的状态。若告知有文件已被修改,使用diff查看修改的内容。
(1)版本回退
历史记录:git log ;
Git的commit id是用16进制表示的.HEAD表示当前版本,HEAD~num表示网上num个版本。
git reset表示退回.Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本
(2)工作区与暂存区
暂存区是Git的的同其它版本系统,如SVN的一个不同。
工作区:就是你在电脑里能看到的目录,比如我的learngit
文件夹数数就是一个工作区:
暂存区:阶段(或者叫索引)。
(3)管理修改
混帐的比其他版本控制系统设计得优秀,因为混帐的跟踪并管理的是修改,而非文件。
操作过程:第一次修改 - > git add
- >第二次修改 - > git add
- >git commit。
每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
(4)撤销修改(考虑以下的三种场景)
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout
命令。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本退回一节,不过前提是没有推送到远程库。
(5)删除文件
命令git rm
用于删除一个文件有以下两种情况:
1)确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit;
2)误删文件,不过如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。