Git学习笔记(1)
1.git的简介
毋庸置疑,git是世界上最先进的分布式版本控制系统,没有之一。2005年,linux之父linus花了两周时间写出了git。git采用的是分布式的版本控制方式,其克服了集中式版本控制系统速度慢,必需联网的缺点,但git不仅仅只有这些优点。2.git的安装
如果你用的是Debain族的系统,如Ubuntu,Debain,那么要恭喜你了,你可以一条命令将无比强大的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 “yourname@you.com”
说明: yourname@you.com 指的是你的邮箱地址,至今还没有邮箱?别逗我了
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 <zhoupans_mail@163.com>
Date: Mon Jul 20 22:03:59 2015 +0800
readme.txt third push
commit 51f8f75b798b26e32e6f2621138ee2445c5dfa77
Author: dream2018 <zhoupans_mail@163.com>
Date: Mon Jul 20 21:46:35 2015 +0800
readme.txt second push
commit ac6574fc5c5283d9f511f0b429362bc1cae4bf13
Author: dream2018 <zhoupans_mail@163.com>
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.撤销修改
上面讲了返回历史版本,这里就讲讲撤销修改的问题吧。如果你没有add和 commit的话
$ 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