一:Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
(补充说明一下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。)
二:SVN与Git的最主要的区别?
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
三:在windows上如何安装Git?
msysgit是 windows版的Git,如下:
需要从网上下载一个,然后进行默认安装即可。安装完成后,在开始菜单里面找到 "Git --> Git Bash",如下:
会弹出一个类似的命令窗口的东西,就说明Git安装成功。

四、git的使用
1、登录
在窗口中进行git登录:需要已经注册过的用户名和邮箱,
2、创建版本库
版本库:英文名repository,可以简单的理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
通过git init 将当前目录设置为git可以管理的仓库,设置完成后,当前目录下会多出一个.git的文件夹,其中有许多关于版本控制的文件,勿动。
然后通过config --global user.name、config --global user.email进行登录,登陆后可进行版本控制操作,
3、将文件添加至版本库
使用Git进行管理文件,需要首先存在,然后由add指令调至暂存区、再commit提交至版本库,

4、文件的修改
提交之后如作修改,可使用diff指令进行查看修改处,再重新使用add、commit指令提交至版本库,
需要注意的是,status指令可以帮助查看是否有文件被修改,


在实际应用中,尝尝有多个文件同时被修改,且伴有新建文件,文件操作过多时,容易记忆混淆,
可以通过status指令查看全部修改和新建文件,然后逐个add进暂存区,统一commit至版本库,

注意1:也可以使用Git status -sb查看工作区中文件状态,

当文件修改或者新建时,文件名前??,add之后,变成A,commit全部之后,显示#master
注意2:当工作区中变动较多时,可以使用Git add -A 统一add至暂存区,
![]()
注意3:当版本库中的文件被修改,用status指令查看时,显示绿的的modified,表示修改已经add、带commit,
注意4:使用Git commit时,一定加上-m ,否则代码中有备注将无法提交,
5、版本信息查询
对文件进行再一次或者多次修改提交之后,可以使用log指令查看个版本的详细信息,按修改提交的时间倒叙排放,
也可以使用log --pretty=oneline进行版本信息的缩略显示,只显示版本号和修改备注,


6、版本回滚
6.1、直接回滚至之前版本
当前版本为head,可使用reset指令进行回滚,
回滚至上一个版本:reset --hard head^,
回滚至上上个版本:reset --hard head^^,
回滚至上100个版本:reset --hard head~100,
回滚之后,可使用cat指令在Git中查看文件内容,也可以直接打开文件查看,会发现后面的修改已经不见,
使用log指令查看,会发现后面修改的日志也不见了,

6.2、回滚至被回滚掉的版本
文件中333的内容已经不见了,log查看的版本信息中也已经没有333版本文件的内容了,可是如何回滚回333版本?
即:如果经过回滚,后续版本的内容以及log信息已经不再了,可是需要回滚,怎么办?
答案是:使用版本号回滚:reset --hard 版本号,
其中,版本号使用reflog指令获取,

7、撤销文件修改
如果文件再没有被commit之前,发现有错误需要重新修改,
除了可以直接在文件中进行修改,或者使用之前的reset指令回滚到上一个版本,
还可以使用checkout修改指令取消工作群的最新修改,这里有两种情况:
一是:文件修改后没有提交至暂存区,撤销至版本库中一致,
二是:文件修改后已经提交至暂存区,撤销至暂存区中一致,
![]()
8、删除文件恢复
直接在工作区中删除文件,或使用rm指令,删除后,如果需要彻底从版本库中删除,需要add、commit,
删除文件的恢复,分两种情况:
一是:工作区中删除,未提交至暂存区或者版本库,使用checkout指令恢复,
二是:工作区中删除后,提交至暂存区或者已经提交至版本库,只能使用版本恢复hard指令,

浙公网安备 33010602011771号