Github学习(一)

介绍


Git是目前世界上最先进的分布式版本控制系统

Git分布式版本控制系统关系图

 

参考文献


廖雪峰老师的官网https://www.liaoxuefeng.com/

老师关于git的介绍可以说非常详细了。

 

安装Git


 我所用的系统是Ubuntu 16.04,可通过命令直接安装git

sudo apt-get install git

 

创建版本库


版本库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

# 创建空目录

$ mkdir git

$ cd git

$ pwd

/home/dss/git

# 通过git init 把这个目录改成Git 可以管理的仓库

$ git init
初始化空的 Git 仓库于 /home/dss/git/.git/

 

把文件添加到版本库


 # 在git 目录下创建readme.txt,并在里面填写以下内容:

Git is a version control system.

Git is free software.

# 把文件放到仓库:

STEP 1 通过git add 命令把文件添加到仓库

git add readme.txt

STEP 2 通过git commit 命令把文件提交到仓库

$ git commit -m "wrote a readme file"
[master (根提交) 654e4d3] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

 

修改文件


 

 # 修改readme.txt,添加以下内容

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

 # 使用git status命令查看结果

# git status
位于分支 master
尚未暂存以备提交的变更
  (使用 "git add <文件>..." 更新要提交的内容
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

# 使用git diff命令查看修改的内容

git diff readme.txt

diff --git a/readme.txt b/readme.txt
index 46d49bf..5479166 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,4 @@
 Git is a version control system.
 Git is free software.
+Git is a distributed version control system.
+Git is free software.

 # 确认到修改的内容后,再做提交

git add readme.txt

# git status查看当前仓库的状态

$ git status
位于分支 master
要提交的变更
  (使用 "git reset HEAD <文件>..." 以取消暂存)

    修改:     readme.txt

# 确认过修改后就可以提交了

# git commit -m "add distributed"
[master 9160615] add distributed
1 file changed, 2 insertions(+)

 # 再用git status查看状态

# git status
位于分支 master
无文件要提交,干净的工作区

 

版本回退


 

 # 我们再修改一次,添加如下的内容:

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

# 提交

git add readme.txt

git commit -m "append GPL"

 

# git log可以告诉我们所有的历史记录

# git log

git commit -m "append GPL"
[master 5ee00ca] append GPL
 1 file changed, 2 insertions(+)
root@dss:/home/dss/git# git log
commit 5ee00ca25d2da23ce38cbaec3bd900fb630a51aa
Author: OwlMen <dss_strivetheworld@163.com>
Date:   Mon Jul 23 13:19:54 2018 +0800

    append GPL

commit 91606157a3c417d3dca80810ccd1b315644e8e70
Author: OwlMen <dss_strivetheworld@163.com>
Date:   Mon Jul 23 13:00:36 2018 +0800

    add distributed

commit 654e4d3c3657d415605d40f02ce63cc09b4ea99a
Author: OwlMen <dss_strivetheworld@163.com>
Date:   Mon Jul 23 11:51:30 2018 +0800

    wrote a readme file

 # 获得简略的历史信息则可以这样

# git log --pretty=oneline
5ee00ca25d2da23ce38cbaec3bd900fb630a51aa append GPL
91606157a3c417d3dca80810ccd1b315644e8e70 add distributed
654e4d3c3657d415605d40f02ce63cc09b4ea99a wrote a readme file

# 注:

# 回到上一个版本

git reset --hard HEAD^

# 回到上上一个版本

git reset --hard HEAD^^

# 回到第一百个版本

git reset --hard HEAD~100

 # 回到上一个版本

git reset --hard HEAD^

HEAD 现在位于 9160615 add distributed

 # 查看readme.txt 的内容

# cat readme.txt

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

# 确实是回到了上一个版本

# 用git log查看历史记录

# git log
commit 91606157a3c417d3dca80810ccd1b315644e8e70
Author: OwlMen <dss_strivetheworld@163.com>
Date:   Mon Jul 23 13:00:36 2018 +0800

    add distributed

commit 654e4d3c3657d415605d40f02ce63cc09b4ea99a
Author: OwlMen <dss_strivetheworld@163.com>
Date:   Mon Jul 23 11:51:30 2018 +0800

    wrote a readme file

 # 回到第三个版本需要有第三个版本的commit id)

git reset --hard 5ee00ca25d2da23ce38cbaec3bd900fb630a51aa    #好像可以只写前7位,我这里就全写出来了

HEAD 现在位于 5ee00ca append GPL

# cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
Git is free software.
Git is a distributed version control system.
Git is free software distributed under the GPL.

# 没错,又回到了第三个版本

# git回退版本原理图

 

 # 我们可以用git reflog查看我们的每一条命令

# git reflog

5ee00ca HEAD@{0}: reset: moving to 5ee00ca25d2da23ce38cbaec3bd900fb630a51aa
9160615 HEAD@{1}: reset: moving to HEAD^
5ee00ca HEAD@{2}: commit: append GPL
9160615 HEAD@{3}: commit: add distributed
654e4d3 HEAD@{4}: commit (initial): wrote a readme file

#用 git reset --hard commit_id命令即可回到我们想要的版本

 

posted on 2018-07-23 14:00  董大志  阅读(209)  评论(0)    收藏  举报

导航