Git学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git学习笔记相关的知识,希望对你有一定的参考价值。

一、Git简介

  1、Git是什么?

  Git是世界上最好用的分布式版本控制系统,它是“Linux之父” linus用C语言花了两周时间开发的又一个伟大的开源软件,当时主要用于Linux源码管理。2008年,GitHub网站上线之后,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,php,Ruby等等。Git迅速成为最流行的分布式版本控制系统。

  2、集中式vs分布式

  集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

  Linus一直痛恨的CVS及SVN都是集中式的版本控制系统。

  分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,你在自己的电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

  技术分享技术分享

           集中式版本控制系统                     分布式版本控制系统

  

二、安装Git

  1、Linux系统

  Git诞生于Linux平台并率先服务于Linux内核,因此Linux系统自带Git,我们可以使用系统默认的版本,也可以使用源码安装最新版本。

  技术分享   技术分享

       CentOS6.6  Git版本               Ubuntu16.04  Git版本

  2、Windows系统

  windows版本下载地址:https://git-scm.com/download/win   下载安装之后貌似是图形化界面的,由于我这里采用Ubuntu系统练习,所以win版本就不研究了。

 

三、Git初始化

  在安装完成之后,还需要做最后一步配置: 

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

  因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

  注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

  git init 创建版本库 (目录不存在会自动创建)

  技术分享

  从上图中初始化信息中可以看到,git init命令在工作区中创建了隐藏目录.git,这个隐藏目录就是Git的版本库(里面的东西不能随便乱改)。  

    把文件添加到版本库

  编写一个readme.txt文件,内容如下: 

Git is a version control system.
Git is free software.

  readme.txt文件一定要放到learngit目录下(子目录也可以),因为这是一个Git仓库,放到其他地方Git就找不到了。

  1、git add   把文件添加到仓库

  技术分享

  2、git commit   把文件提交到仓库:

  技术分享

  git commit命令,-m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

  返回的输出信息中,master是这次提交的分支,且是该分支的第一个提交(root-commit,后面再次提交就没有这个提示了), 提交的id为 e09b1a6 .

 

四、时光穿梭机

  1、前奏

    修改readme.txt文件的内容:

    Git is a distributed version control system.

    Git is free software.

    现在运行 git status命令查看结果:

    技术分享

    git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

     如果想要查看修改了什么内容,可以使用 git diff

    技术分享

    git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。

     修改之后还要提交到仓库:

    技术分享

 

  2、版本回退

     当文件经过多次修改之后,我们可能记不住改了哪些内容,这时可以使用 git log命令查看:

    技术分享

    git log命令显示从最近到最远的提交日志,我们可以看到4次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file

     如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

    技术分享

  把readme.txt回退到上一个版本,也就是“add distributed”的那个版本:

    git reset --hard HEAD^       回退到上一个版本

    git reset --hard c7bb35ce    回退到指定版本

  在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

 

  Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL!

  Git提供了一个命令git reflog用来记录每一次操作:

    技术分享

 

   3、工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

以上是关于Git学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Git学习笔记

git学习笔记

git学习笔记

git学习笔记

git学习笔记

代码管理工具 --- git的学习笔记四《重新整理git》