什么是版本库呢?版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建版本库
mkdir learngit
cd learngit
通过git init
命令把这个目录变成 Git 可以管理的仓库:
git init
创建成功之后会在该文件夹下创建隐藏文件夹.git
。
把文件添加到版本库
在 learngit
文件夹下编写文本文件readme.txt
:
Git is a version control system.
Git is free software.
将一个文件放到 Git 仓库需要两步:
(1)
git add
⇒ 把文件添加到仓库git add readme.txt
(2)
git commit
⇒ 把文件提交到仓库git commit -m "wrote a readme file"
-m:message,最好输入有意义的内容。
git -commit 一次可以提交多个文件,前提是已经将文件添加(add)到仓库。
时光机穿梭
- 要随时掌握工作区的状态,使用
git status
命令。 - 如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
我们已经成功地添加并提交了一个readme.txt
文件,现在,是时候继续工作了,于是,我们继续修改readme.txt
文件,改成如下内容:
Git is a distributed version control system.
Git is free software.
(1)运行
git status
查看结果:git status
git status
命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt
被修改过了,但还没有准备提交的修改。(2)
git diff
:查看具体内容的修改git diff readme.txt
git diff
顾名思义就是查看difference
,(3)
git add/commit
:提交修改(同提交新文件)git add readme.txt git commit -m "add a distributed"
- (4)最后
git status
查看仓库的当前状态
版本回退
再次修改 readme.txt 文件,并提交:
Git is a distributed version control system.
Git is free software distributed under the GPL.
现在我们来回顾 readme.txt 文件一共有几个版本被提交到 Git 仓库里了:
(1)使用
git log --pretty=oneline
查看提交信息56a2a63e0fc6817e79ff9790041bf50f5b09234f add GPL 95787a3e90ec69742f655fd4d6fea79ac361605b add distributed d3885bdfbc15f86b38b85a437ebaf00180ecad53 wrote a readme file
使用 Git GUI (图形界面),可清晰地查看当前仓库的提交信息
(2)回退到之前的某一版本
首先,Git 必须知道当前版本是哪个版本,在 Git 中,用 HEAD 表示当前版本,也就是最新的提交 56a2a…f5b09234f (注意我的提交ID和你的肯定不一样),上一个版本就是 HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:
git reset --hard head^
此时如果我们想要回到“append GPL”(也即穿越到未来),也是可以的,只要我们能够找到
append GPL
的commit id
是 56a2a63…git reset --hard 56a2a63
不必写全。
(3)
Git
提供了一个命令git reflog
用来记录你的每一次命令,以便确定要回到未来的哪个版本。