1. 创建版本库
我们一般把版本库也叫仓库(repository),其实我们可以简单的把它看成一个目录,只不过目录里面的文件都会由 Git 进行管理,当我们对文件进行修改、删除、Git 都可以对其进行跟踪。
那么,如何在本地设置一个代码库呢? 很简单,使用 git init 命令就可以把一个目录变为 Git 可以管理的仓库。
$ git init
Initialized empty Git repository in /Users/yuge/Documents/git_test/.git/
这样,就在本地创建了一个版本库,并且是一个空的版本库。在这个文件夹下有个 .git 的目录,git 就是用这个目录来跟踪管理版本库的。 在linux 下使用 ls -al 命令来进行查看。
2. 文件修改
可以在 git_test 文件夹下新建一个文件 readme.txt ,内容如下:
Git is a distributed version control system.
Git is free software.
此时使用 git status 命令可以查看当前工作区状态,如下:
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt
nothing added to commit but untracked files present (use "git add" to track)
提交文件修改需要两步:
第一步,使用 git add 将文件添加到Git版本库;
第二步,使用 git commit 把文件提交到Git版本库。
可以多次使用 git add 添加多个文件,然后使用一次 git commit 提交多个文件,内容如下:
$ git add readme.txt
$ git add test.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: readme.txt
new file: test.txt
$ git commit -m "git add test"
[master b201285] git add test
2 files changed, 2 insertions(+)
create mode 100644 test.txt
使用 git diff 命令可查看具体修改细节,如下:
$ git diff
diff --git a/readme.txt b/readme.txt
index 9247db6..4923cda 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
Git is a distributed version control system.
Git is free software.
+new line
3. 版本控制
使用 git log 命令可以查看版本历史记录,如下:
$ git log
commit b201285c7a470a70e9637827c558247bb4326cdc
Author: yuge <yuge@126.com>
Date: Tue Jul 25 14:12:02 2017 +0800
git add test
commit 4af2d92cab54ea21af90c5feb2cc0d895c74dbea
Author: yuge <zyuge@126.com>
Date: Tue Jul 25 14:05:29 2017 +0800
add readme.txt
在Git中,用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上100个版本写100个 ^ 比较容易数不过来,所以写成 HEAD~100。
所有,回退到上一个版本如下:
$ git reset --hard HEAD^
HEAD is now at 4af2d92 add readme.txt
使用sha256值回退,如下:
$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
使用 git reflog 可查看命令历史,如下:
$ git reflog
4af2d92 HEAD@{0}: reset: moving to HEAD^
25606f8 HEAD@{1}: commit: add test
4af2d92 HEAD@{2}: reset: moving to HEAD^
b201285 HEAD@{3}: commit: git add test
4af2d92 HEAD@{4}: commit (initial): add readme.txt
4. 撤销修改
使用 git checkout 丢弃工作区的修改
$ git checkout -- readme.txt
命令 git checkout -- readme.txt 意思就是,把 readme.txt 文件在工作区的修改全部撤销,这里有两种情况:
一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是 readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。