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.txtdiff --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命令即可回到我们想要的版本
浙公网安备 33010602011771号