Git学习笔记(1)

Git学习笔记(1

1.git的简介

毋庸置疑,git是世界上最先进的分布式版本控制系统,没有之一。2005年,linux之父linus花了两周时间写出了gitgit采用的是分布式的版本控制方式,其克服了集中式版本控制系统速度慢,必需联网的缺点,但git不仅仅只有这些优点。

2.git的安装

如果你用的是Debain族的系统,如UbuntuDebain,那么要恭喜你了,你可以一条命令将无比强大的git搬到你的电脑上,打开终端,直接输入

$ sudo apt-get install git


如果是非Debain族的,如Redhat ,那就稍微有点麻烦,需要一下步骤:
	1.下载git 
 
 $ https://www.kernel.org/pub/software/scm/git/git-1.9.4.tar.gz

	2:解压文件:
 
 $ tar zxf git-1.9.4.tar.gz

	3:执行命令:

 $ ./configure  //注意前面是点斜缸表示当前目录

	4:编译:
 
 $ make

	5:安装:
 
 $ make install

3.git首次使用的初始化

在使用git时候,git需要知道主人是谁,才可以正常的工作,那么,在初次使用git的时候,就需要先告诉git你的相关信息。看命令:
 
$ git config –-global user.name “yourname”   

说明:yourname指的是你的github的账户名,要是还没有到github上面注册帐号的话,那你也太out了吧,赶紧滚去https://github.com/ 上面注册吧,继续

$ git config --global user.email “[email protected] 
说明: [email protected] 指的是你的邮箱地址,至今还没有邮箱?别逗我了惊恐

4.git版本库的创建

在前面的事做完后,你就可以选择任意一个你认为合适的地方,创建一个空的文件夹,作为git的仓库了, 建好后,输入命令
$ git init      //初始化你的git仓库
 
然后基本的git环境就搭建好了,后面就是考验你记忆力的时候了,注意。

5.git简单的使用命令

如果只上命令没有例子是不是很单调,当然是当然的啦。首先,在你刚才创建的仓库里,就是刚创建的文件夹里新建一个文本文档readme.txt , 打开文档,输入一句话,内容任意,这里就输入 git very niuB ,英语学的不好,大家见笑了尴尬。然后,输入命令
$ git add readme.txt  

readme.txt加入到仓库里,然后再

$ git commit -m  “×××”
 
记录本次提交的改动,当然×××所代表的内容是任意的,但最好有意义,方便以后查看,这里,我们就输入readme.txt first push吧。想查看当前文件状态,就知道你想了,那就输入:

$ git status readme.txt
 
由于上次刚提交,没有对其内容进行修改,就会出现

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#nothing to commit (working directory clean)
 
由此可知,文件没有更改,全部是最新的
下面,我们给readme.txt 后面追加一句Git is free software.
然后在输入 

$ git status readme.txt 
 
执行后就会出现:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   readme.txt
#no changes added to commit (use "git add" and/or "git commit -a")
 
从上面可知,readme.txt 更改了,但未提交。
再使用
 
 $ git add readme.txt 
 $ git commit -m “readme.txt second push”
 
两句命令,出现: 

[master 51f8f75] readme.txt second push
1 file changed, 1 insertion(+)
 
表示提交记录成功。
你可能会想,要是git能显示我每次更改的那些内容的话,是不是我会在添加到仓库时会更安心,没错,git已接近万能,可以满足你这个合理的要求

$ git diff readme.txt 
 
此条命令可以显示你从上次add到现在更改了什么,由于刚提交,我们就再添加一句 git was maked by linus
然后先不要add上去,输入上面的命令,会出现下面内容:

diff --git a/readme.txt b/readme.txt
index 66a1ca3..faf695a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
 git very niuB
 Git is free software.
+git was maked by linus
 
表明你新添加了一句git was maked by linus,是不是很清楚明白?yes然后git add readme.txt  , git commit -m "readme.txt third push"
想查看历史提交的情况,可以,不可以就不敢称之为万能了

$ git log readme.txt 
 
出现一下内容:

commit b480dd2d89552df62d97e5b6c892266ca338486e
Author: dream2018 <[email protected]>
Date:   Mon Jul 20 22:03:59 2015 +0800

    readme.txt third push

commit 51f8f75b798b26e32e6f2621138ee2445c5dfa77
Author: dream2018 <[email protected]>
Date:   Mon Jul 20 21:46:35 2015 +0800

    readme.txt second push

commit ac6574fc5c5283d9f511f0b429362bc1cae4bf13
Author: dream2018 <[email protected]>
Date:   Mon Jul 20 21:38:12 2015 +0800

    readme.txt first push
 
以上内容可以看出来你已提交三次,每次提交的精确时间。你一定会觉得,能看出来你每次提交的历史有何卵用,又不能退回去,然而,这个真的可以。
git中,HEAD代表当前的版本,上一个版本就用HEAD^表示,上上一个就可以用HEAD^^表示,当然啦,往上100个就可以写100^,但是,我感觉特麻烦,相信你也是,于是就有另一种表示方法,HEAD~100,学会了怎样表示历史版本,下面就展示回退历史版本吧,我们称其为时空穿梭

$ git reset --hard HEAD^ //返回到上一版本
 
至于参数hard有何卵用,以后你便会知道,现在只要记者每次带上就好,假如你提交的次数比较多的话,你可能会嫌每次得数好麻烦呀,现在有一种简单方法,就是直接复制每次的版本id就可以实现回退,说道版本id就是指每次成功commit 后的内容里 master 后面的一串如字符,十六进制的。如下:
[master 51f8f75] readme.txt second push
1 file changed, 1 insertion(+)
里面的版本id就是 51f8f75 。

$ git reset 51f8f75 // 返回第二次提交的状态
 
如果关闭了终端,找不到提交的id咋办呀?完全不用担心,可以使用:

$ git reflog readme.txt 
 
就会出现:

b480dd2 HEAD@{0}: commit: readme.txt third push
51f8f75 HEAD@{1}: commit: readme.txt second push
ac6574f HEAD@{2}: commit: readme.txt first push
 
里面显示的是你的历史提交版本id什么的,那么,时空穿梭就简单了

6.git的工作区与暂存区

上面讲了那么多需要动手实践的,估计大家手都累了吧,下面就讲点理论的吧,中和一下吧。
 工作区,工作区,顾名思义,就是工作的地方,一般指的就是你初始化的文件夹,里面有一个隐藏的文件夹.git。而暂存区,就是文件暂时存放的地方,然而,暂存区是看不到了,当使用git add 后,文件会从工作区放进暂存区,多次add,暂存区就会有多个文件,使用git commit 可以一次性将所有的文件提交到版本库里面。
此处较为难理解,强烈建议猛戳此处:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

7.撤销修改

上面讲了返回历史版本,这里就讲讲撤销修改的问题吧。如果你没有addcommit的话

$ git checkout –readme.txt
 
就会丢弃掉工作区的修改,但如果你应经add但并未commit ,可使用

$ git reset HEAD readme.txt 
 
把暂存区的修改撤销掉,放回工作区,然后再使用 git checkout –readme.txt 丢弃掉工作区的修改
 
如果你已经add & commit ,那就请考虑回退到上一版本吧。

8.删除文件

一般的情况下,删除文件你都会直接在图形界面下删除或使用rm命令删除他,然而,此种情况在git下会使工作区与版本库里的文件不一致,会造成很多麻烦事,为避免此种事件的发生,强烈建议你使用:

$ git rm readme.txt
 
删除工作区里面的文件,然后

$ git commit -m “×××”
 
提交删除的更改就行了。
 
参考内容:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000



你可能感兴趣的:(linux,shell,git,分布式,linus,版本控制系统)