GIT学习笔记——创建版本库

GIT学习笔记

创建仓库

创建本地repository

  • 创建一个本地的仓库,这个目录里面所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,因此可以在任何时候都可以最总理是、或者在将来摸个时刻可以“还原”。
  • 在linux系统上创建仓库非常简单:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
  • 然后再通过git init命令把这个目录变成Git可以管理的仓库。
$ git init
已初始化空的 Git 仓库于 /home/lancibe/learngit/.git/
  • 这样就能建立一个的本地仓库。

把文件添加到仓库

  • 我们可以先写一个readme.txt,可以使用linux上的vim编辑器来进行,但是注意一定要放在learngit目录或者他的子目录下。因为这里是git仓库。
  • 第一步:把文件添加到仓库:
$ git add readme.txt
  • 第二步:把用命令git commit将文件提交到仓库
$ git commit -m "wrote a readme file"
  • 双引号里的内容是输入说明,可以任意写,但是不要不写,因为输入说明对自己、对别人的阅读都很重要。git commit命令执行成功之后,系统会提示:1 file changed, 2 insertions(+),这表示1个文件被改动,插入了两行内容。

管理工作区

  • 如果要对文件进行修改,例如我们将readme.txt文件进行了修改,可以运行git status来查看结果:
$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
  • git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但是还没有准备提交的修改。
  • 虽然git告诉我们文件被修改了,但是如果想看看具体修改了什么内容,可以使用git diff这个命令来查看。
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
  • 可以从上面的命令输出轻易地发现,我们在第一行添加了一个distributed的单词。
  • 在知道了对readme.txt文件作出了什么修改后,再把他提交到仓库就放心多了提交修改和提交新文件是一样的两步,先是git add,不过我们现在可以使用git status来查看工作区状态。
$ git add readme.txt 
$ git status
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

	修改:     readme.txt
  • git status告诉我们,将要被提交的修改包括readme.txt`下一步,我们就可以放心的提交了。
$ git commit -m "add distributed"
[master c97cbed] add distributed
 1 file changed, 1 insertion(+), 1 deletion(-)
  • 提交完成之后,我们可以再使用git status命令查看仓库的当前状态。
$ git status
位于分支 master
无文件要提交,干净的工作区

版本回退

  • 在实际工作中,我们肯定不会记得一个相当大的文件每次修改都修改了什么内容,在git中,我们可以通过git log命令查看(历史版本)。
$ git log readme.txt
commit 58cc858205b10b71bffa84f9f454c36f5873e5f8 (HEAD -> master)
Author: lancibe <1609547089@qq.com>
Date:   Thu Dec 5 15:28:00 2019 +0800

    append GPL

commit c97cbeda14418ae7db9d338af24af98c1487eafa
Author: lancibe <1609547089@qq.com>
Date:   Wed Dec 4 16:42:44 2019 +0800

    add distributed

commit efc9a5a30e94689144ee1ea2372a8133d9b8655d
Author: lancibe <1609547089@qq.com>
Date:   Wed Dec 4 15:45:51 2019 +0800

    it is the first file README
  • git log命令显示从最近到最远的提交日志,我们可以看到三次提交。如果觉得信息太多,看的眼花缭乱的,可以加上--pretty=oneline参数:
$ git log --pretty=oneline readme.txt
58cc858205b10b71bffa84f9f454c36f5873e5f8 (HEAD -> master) append GPL
c97cbeda14418ae7db9d338af24af98c1487eafa add distributed
efc9a5a30e94689144ee1ea2372a8133d9b8655d it is the first file README
  • 每一行前面都会有一大串字母加数字,这是版本号commit id,是一个十六进制数。
  • 版本回退:如果我们想把readme.txt回退到上一个版本,应使用以下步骤。
  • 首先,git必须知道当前版本是那个版本,即HEAD关键词表示的版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,如果往前100个版本,要写100个^数不过来,就可以写成HEAD~100
  • 现在,我们要把当前版本append GPL会退到上一个版本,就可以使用git reset命令:
$ git reset --hard HEAD^
HEAD 现在位于 c97cbed add distributed
  • 对于--hard参数的意义,后面会讲到。现在看看readme.txt中的内容是否是上一个版本。
$ cat readme.txt 
Git is a distributed version control system.
Git is free software.
  • 可以发现确实被还原了。
  • 这时候再使用git log看看现在版本库的状态。
$ git log readme.txt
commit c97cbeda14418ae7db9d338af24af98c1487eafa (HEAD -> master)
Author: lancibe <1609547089@qq.com>
Date:   Wed Dec 4 16:42:44 2019 +0800

    add distributed

commit efc9a5a30e94689144ee1ea2372a8133d9b8655d
Author: lancibe <1609547089@qq.com>
Date:   Wed Dec 4 15:45:51 2019 +0800

    it is the first file README
  • 这时候被回退的最新版本已经找不到了,如果想回去,其实也可以,只要上面的命令行窗口还没有被关掉,就可以使用版本号来还原。
$ git reset --hard 58cc
HEAD 现在位于 58cc858 append GPL
$ cat readme.txt 
Git is a distributed version control system.
Git is free software distributed under the GPL.
  • 这样果然又折回来了。
  • git的版本回退速度非常快,因为git内部有个指向当前版本的HEAD指针,当回退版本的时候,git仅仅是把指针指向了append GPL
    1

    2
  • 然后还顺便把工作区的文件更新了,所以让HEAD指向哪个版本号,就把当前版本定位在哪。
  • 但是,上面说的,如果不小心关闭或清空了命令行,找不到之前的版本的版本号了,又该怎么办呢。
  • 当我们使用了$ git reset --hard HEAD^命令回退到上一个版本时,要找之前版本的版本号,可以使用git reflog命令,它是用来记录我们的每一次命令的。
$ git reflog
58cc858 (HEAD -> master) HEAD@{0}: reset: moving to 58cc
c97cbed HEAD@{1}: reset: moving to HEAD^
58cc858 (HEAD -> master) HEAD@{2}: commit: append GPL
c97cbed HEAD@{3}: commit: add distributed
efc9a5a HEAD@{4}: commit (initial): it is the first file README
  • 这样就可以轻松的找到版本号了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值