天天看点

Git学习笔记(持续更新)

Linux环境安装Git

首先测试一下有没有安装Git,直接上代码:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git//这个就是Linux下安装的命令了
           

Windows 安装Git

    1、官网下载安装程序。

    2、开始菜单找到Git-->Git Bash,弹出黑窗口,安装成功。

    3、安装完成,进行设置

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

        //因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

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

Git创建版本库repository

$ mkdir gitrepository
$ cd gitrepository
$ pwd  //显示当前目录
/h/gitrepository
$ git init  //通过git init命令把这个目录变成Git可以管理的仓库
Initialized empty Git repository in H:/gitrepository/.git/  
           

//空的仓库(empty Git repository)

//.git目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了    

//如果没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见

放截图一张(码的是我其他文件名。。)

Git学习笔记(持续更新)

文件添加到版本库

    //所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。

    //千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。

    //Notepad++的默认编码设置为UTF-8 without BOM     set-utf8-motepad++

写一个readme.txt,内容:

Git is a version control system.

Git is free software.

 //一定要放到gitrepository目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

    第一步,用命令git add告诉Git,把文件添加到仓库:$ git add readme.txt

    第二步,用命令git commit告诉Git,把文件提交到仓库:

Git学习笔记(持续更新)

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

    //git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

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

    $ git add file1.txt

    $ git add file2.txt file3.txt

    $ git commit -m "add 3 files."

修改文件内容

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

运行git status查看结果

Git学习笔记(持续更新)

//git status

命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,

readme.txt

被修改过了,但还没有准备提交的修改。

//虽然Git告诉我们

readme.txt

被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的

readme.txt

,所以,需要用

git diff

这个命令看看:

 运行git diff查看结果

Git学习笔记(持续更新)

git diff

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

distributed

单词。

第一步add,然后查看状态,commit,查看状态,结果如图

Git学习笔记(持续更新)

退回之前版本

再次修改文件,如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.
           

修改后提交

Git学习笔记(持续更新)

回想版本有如下的变化:

版本1:wrote a readme file
Git is a version control system.
Git is free software.
           
版本2:add distributed
Git is a distributed version control system.
Git is free software.
           
版本3:append GPL
Git is a distributed version control system.
Git is free software distributed under the GPL.
           

 用git log查看一下日志(ps:没有圈起来的是我弄着玩的,不重要)

Git学习笔记(持续更新)

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上

--pretty=oneline

参数

Git学习笔记(持续更新)
 需要友情提示的是,你看到的一大串类似

3a5436998...

的是

commit id

(版本号),和SVN不一样,Git的

commit id

不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的

commit id

和我的肯定不一样,以你自己的为准。为什么

commit id

需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

首先,Git必须知道当前版本是哪个版本,在Git中,用

HEAD

表示当前版本,也就是最新的提交

3a5436998...

(注意我的提交ID和你的肯定不一样),上一个版本就是

HEAD^

,上上一个版本就是

HEAD^^

,当然往上100个版本写100个

^

比较容易数不过来,所以写成

HEAD~100

现在,我们要把当前版本

append GPL

回退到上一个版本

add distributed

,就可以使用

git reset

命令:

Git学习笔记(持续更新)

看看

readme.txt

的内容是不是版本

add distributed

Git学习笔记(持续更新)

果然被还原了。

git log

再看看现在版本库的状态:

Git学习笔记(持续更新)

发现最新的那个版本

append GPL

已经看不到了,再想返回去怎么办

办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个

append GPL

commit id

1094adb...

,于是就可以指定回到未来的某个版本:

Git学习笔记(持续更新)

版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

再小心翼翼地看看

readme.txt

的内容:

Git学习笔记(持续更新)

果然,我胡汉三又回来了。

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的

HEAD

指针,当你回退版本的时候,Git仅仅是把HEAD从指向

append GPL

Git学习笔记(持续更新)
改为指向

add distributed

Git学习笔记(持续更新)
 然后顺便把工作区的文件更新了。所以你让

HEAD

指向哪个版本号,你就把当前版本定位在哪。

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的

commit id

怎么办?

在Git中,总是有后悔药可以吃的。当你用

$ git reset --hard HEAD^

回退到

add distributed

版本时,再想恢复到

append GPL

,就必须找到

append GPL

的commit id。Git提供了一个命令

git reflog

用来记录你的每一次命令:

Git学习笔记(持续更新)

从输出可知,

append GPL

的commit id是

3a5436998

,现在就可以通过commit id返回任意一个版本。

更多内容请等待。。。