what is 版本库?无论我们平常使用git的频率如何,但是从事IT这个行业的小伙伴一定经常听到有人在说,哪个哪个牛X的项目在哪个仓库,哪个项目的仓库被人恶意添加issue(之前就听说了阿波罗计划的代码仓库中issue被很多无关的中文评论占楼~哎,咱们测试工程师一定不要这样做,为这个行业尽一份力);
localhost:mygit qinzhen$ git status
On branch master
nothing to commit, working tree clean
现在表示在一个master分支上没有可提交的东西,工作目录当前是干净的
2)修改readme.txt文件:
I am a test engineer.
I want to study Git very much.
3)再使用git status查看
localhost:mygit qinzhen$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
localhost:mygit qinzhen$ git diff
diff --git a/readme.txt b/readme.txt
index 225e15a..8080bd8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
I am a test engineer.
-I want to study Git.
+I want to study Git very much.
3.2)commit id——现在再修改文件,在第一行添加I can fly,然后add、commit:
I am a test engineer,I can fly.
I want to study Git.
$ git add readme.txt
$ git commit -m "I can fly"
[master 9c32701] I can fly
1 file changed, 1 insertion(+), 1 deletion(-)
$ git reset --hard 64f5ced
HEAD is now at 64f5ced study git
$ cat readme.txt
I am a test engineer.
I want to study Git.
从上面的结果可以看到,我们已经通过commit id成功回到了过去,回到了那个没有”I can fly“的年代;可以注意到的一点是,在写commit id的时候并没有写全,只是写了前面的一部分,git就可以找到了;
额。。。肯定有人要问具体是几位,说实话~我也不知道0.0,也没有专门去研究过,前四五位?六七位?七八位?达到使用要求就好啦,能保证id唯一,稍微多复制几个就可以了。。。
3.3)回到add前的年代——仅add文件到了暂存区,并没有commit;感觉好像是进入到了add的另一重空间,在未来也找不到他,那想回到原来的”时期“的话,就可以使用git reset HEAD <file>把file丢掉
现在我的readme.txt文件内容如下,并且已经add到了暂存区:
I am a test engineer.I can fly!
I want to study Git.
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: readme.txt
使用git reset HEAD readme.txt命令将修改从add撤销回来
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- readme.txt
$ cat readme.txt
I am a test engineer.
I want to study Git.
$ git status
On branch master
nothing to commit, working tree clean
$ git reflog
64f5ced (HEAD -> master) HEAD@{0}: reset: moving to 64f5ced
9c32701 HEAD@{1}: commit: I can fly
64f5ced (HEAD -> master) HEAD@{2}: reset: moving to HEAD^
7582a45 HEAD@{3}: commit: very much
64f5ced (HEAD -> master) HEAD@{4}: commit: study git
在这里就可以看到之前I can fly 的commit id;这里顺便提一句,上面说了commit id不用写全部,写前面一部分,但是不确定具体写几位,这里看到git的log也只记录了前7位,那就姑且算7位吧。。。
有了commit id就等于获得了返回未来的坐标信息和方法,电影也差不多到了大结局的时候了,本文也就要结束了,来个收尾:
$ git reset --hard 9c32701
HEAD is now at 9c32701 I can fly
$ cat readme.txt
I am a test engineer,I can fly.
I want to study Git.
$ git status
On branch master
nothing to commit, working tree clean