Git学习笔记(一)
标签: Git
Git是什么?
Git中译为混账,是Linus先生花了一个星期写的分布式版本控制系统(VCS,Version Control System),用于Linux内核的协同开发。所谓版本控制系统,个人理解就是可以保存文本文件的历史版本信息,并且可以回溯到某个历史版本的文本文件管理系统。它的设计就是为了方便软件开发的版本迭代和协同开发。
比如,你打开电脑的记事本,一个不小心把昨天写的备忘全给删除了,而且还习惯性地按了Ctrl+S,你懵了。一般情况下是找不回来了。除非有版本备份,现在有些云笔记类软件就提供了这样的功能。其实质就是版本控制,它可以让你回溯到某个历史版本,像是吃了后悔药一般美妙。
Git怎么玩?
配置Git环境
玩什么都有第一步,已经司空见惯了呃。没错就是配置环境。Git的环境配置还不算复杂:
-
下载Git并安装Git(注意:不懂英文的按默认配置就好);
-
向全世界宣称你的存在
//注意:--global表示你电脑里的所以Git仓库都采用相同的配置
//如果有不用用户的Git仓库,就去掉吧。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
```
建个仓库放点东西
- 建库简单:在磁盘上新建个文件夹作为工作区,然后右击打开Git Bash,执行
git init
,你会发现多了个.git
文件夹。 - 放东西有点复杂
- 第一步:在工作区新建一个文件,命名为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 <email@example.com>
Date: Fri Apr 1 16:19:41 2016 +0800
update yuren.txt
commit ce58ee1a57d21c9d752e80b820b7f2968249ac2e
Author: Your Name <email@example.com>
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 <linlshare@gmail.com>
Date: Fri Apr 1 16:17:35 2016 +0800
add yuren.text
v2版本的信息似乎丢失了。怎么办?
-
方法一:如果你还知道v2版本的commit id的话可以
$ git reset --hard <commit id>
来解决; -
方法二:假如你不知道也没关系,使用
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,我就继续写╮(╯◇╰)╭
![](https://img.haomeiwen.com/i1679464/7b0bafa2a5e90237.jpg)