Git学习笔记(一)

标签: Git


Git是什么?

Git中译为混账,是Linus先生花了一个星期写的分布式版本控制系统(VCS,Version Control System),用于Linux内核的协同开发。所谓版本控制系统,个人理解就是可以保存文本文件的历史版本信息,并且可以回溯到某个历史版本的文本文件管理系统。它的设计就是为了方便软件开发的版本迭代和协同开发。

比如,你打开电脑的记事本,一个不小心把昨天写的备忘全给删除了,而且还习惯性地按了Ctrl+S,你懵了。一般情况下是找不回来了。除非有版本备份,现在有些云笔记类软件就提供了这样的功能。其实质就是版本控制,它可以让你回溯到某个历史版本,像是吃了后悔药一般美妙。

Git怎么玩?

配置Git环境

玩什么都有第一步,已经司空见惯了呃。没错就是配置环境。Git的环境配置还不算复杂:

  1. 下载Git并安装Git(注意:不懂英文的按默认配置就好);

  2. 向全世界宣称你的存在

//注意:--global表示你电脑里的所以Git仓库都采用相同的配置
//如果有不用用户的Git仓库,就去掉吧。
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
```

建个仓库放点东西

  1. 建库简单:在磁盘上新建个文件夹作为工作区,然后右击打开Git Bash,执行git init,你会发现多了个.git文件夹。
  2. 放东西有点复杂
    • 第一步:在工作区新建一个文件,命名为yuren.txt。注意:文本文件的编码是UTF-8 without BOM(使用Notepad++可以查看和修改)
    • 第二步:git add .添加文件到暂存区
    • 第三步:git commit -m "add yuren.txt"添加文件到本地仓库

历尽千辛万苦终于把文件交给Git来管理了。

时光机穿梭

假定你在上个步骤中放入的文件是:yuren.txt。里面的内容是(标记为v1):

[微信红包]恭喜发财,大吉大利!
是不是又冲进来了,这么激动干嘛,发几个文字而已~

后来,你想了想,改成了(标记为v2):

[微信红包]愚人节Happy!
是不是又冲进来了,这么激动干嘛,发几个文字而已~

根据【建个仓库放点东西】里说的步骤更新本地仓库中的信息:

$ git add .
$ git commit -m "update yuren.txt"

不知道哪根筋不对,你又想要v1版本的yuren.txt了,但是又忘了上一次写的内容,怎么办?

没关系,可以通过git log查看每次的提交信息。

$ git log
commit 1ba454f3ef3e48b88b4c24f72dc8055407cd9019
Author: Your Name 
Date:   Fri Apr 1 16:19:41 2016 +0800

    update yuren.txt

commit ce58ee1a57d21c9d752e80b820b7f2968249ac2e
Author: Your Name 
Date:   Fri Apr 1 16:17:35 2016 +0800

    add yuren.text

回退到上一次commit,只需要执行

$ git reset --hard HEAD^
HEAD is now at ce58ee1 add yuren.text

这里,HEAD代表上一个版本,HEAD^代表上上个版本,HEAD~100代表上100个版本。当然可以使用具体的commit id来回退,比如上面的等价于$ git reset --hard ce58ee1

重新打开yuren.txt来看,v1版本的信息果然回来了。


人的心理真是捉摸不透,刚找回v1版本的信息了,就又怀念v2版本的信息了。然而,现在使用git log都救不了你了。

$ git log
commit ce58ee1a57d21c9d752e80b820b7f2968249ac2e
Author: Lshare 
Date:   Fri Apr 1 16:17:35 2016 +0800

    add yuren.text

v2版本的信息似乎丢失了。怎么办?

  • 方法一:如果你还知道v2版本的commit id的话可以$ git reset --hard 来解决;

  • 方法二:假如你不知道也没关系,使用git reflog查看你的每次命令,接下来就可以用方法一解决了。

    $ git reflog
    ce58ee1 HEAD@{0}: reset: moving to HEAD^
    1ba454f HEAD@{1}: commit: update yuren.txt
    ce58ee1 HEAD@{2}: commit (initial): add yuren.text
    

写到这里懒癌犯了,除非点赞超过100,我就继续写╮(╯◇╰)╭


Git学习笔记(一)_第1张图片
欢迎关注我的公众号

你可能感兴趣的:(Git学习笔记(一))