适合新手小白的Git使用指南(二)
@[命令行|Git|代码管理]
本地版本控制
git status
使用git status命令查看当前库状态
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: mytext.txt
可见,这个时候mytest是新文件,还未被提交至版本库
使用git commit命令提交
$ git commit -m "the first commit"
[master (root-commit) b75ed50] the first commit
1 file changed, 1 insertion(+)
create mode 100644 mytext.txt
$ git status
On branch master
nothing to commit, working tree clean
woking tree clean 说明此时工作环境干净,也就是说没有更改的东西
git diff
git diff命令查看更改前后的文件区别
$ git diff mytext.txt
diff --git a/mytext.txt b/mytext.txt
index dd6bcc2..da44a0c 100644
--- a/mytext.txt
+++ b/mytext.txt
@@ -1 +1,2 @@
-This is my test
\ No newline at end of file
+This is my test
+lalalla
\ No newline at end of file
说明我在原来的文件上添加了一句lalalla
再使用git add 添加到待提交区,git
commit提交到库
git log
git log 命令查看git的日志,方便自己忘了什么的时候可以随时查看和版本控制
$ git log
commit 431db2e3f3ca535b26ca853e346aea704abb3260 (HEAD -> master)
Author: ycdxsb <1452740432@qq.com>
Date: Sat Jan 20 10:49:03 2018 +0800
my second change
commit b75ed500f574c735d9287ead61993d378038c9f6
Author: ycdxsb <1452740432@qq.com>
Date: Sat Jan 20 10:42:28 2018 +0800
the first commit
如果觉得每一个的输出东西太多,可以加上–pretty=oneline
$ git log --pretty=oneline
431db2e3f3ca535b26ca853e346aea704abb3260 (HEAD -> master) my second change
b75ed500f574c735d9287ead61993d378038c9f6 the first commit
后面的一串数字是它对应的版本号
版本回退
在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
使用 git reset回退到上一版本
14527@DESKTOP-51QO2KL MINGW64 ~/Desktop/versions (master)
$ git reset --hard HEAD^
HEAD is now at b75ed50 the first commit
14527@DESKTOP-51QO2KL MINGW64 ~/Desktop/versions (master)
$ cat mytext.txt
This is my test
此时查看git log,可以看到版本已经回退了
$ git log
commit b75ed500f574c735d9287ead61993d378038c9f6 (HEAD -> master)
Author: ycdxsb <1452740432@qq.com>
Date: Sat Jan 20 10:42:28 2018 +0800
the first commit
也可以直接指定版本号回退
git reset --hard b75ed50
这里的版本号是前7位
如果一不小心回退错了,不要着急,还是可以回去的
使用git reflog命令可以查看之前的每一次操作记录
$ git reflog
b75ed50 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
431db2e HEAD@{1}: commit: my second change
b75ed50 (HEAD -> master) HEAD@{2}: commit (initial): the first commit
找到了前一次的版本号,所以直接用版本号回退
$ git reset --hard 431db2e
HEAD is now at 431db2e my second change
$ cat mytext.txt
This is my test
lalalla
说明已经回退对了
工作区和暂存区
简单的说,工作区就是打开目录看到的区域,而暂存区又包含stage和master,当使用add命令时提交到stage,只有再使用commit命令才会提交到master版本库中,而HEAD,就相当于一个头指针,它指向当前的版本
撤销修改git checkout
使用git checkout命令可以撤销对工作区中文件的修改(就相当于退出但不保存修改的感觉)
$ git checkout -- mytext.txt
如果已经在暂存区,则可以使用git reset HEAD file把修改回退到工作区 ,最后用之前的命令重置一下工作区的文件
文件删除
rm mytext.txt删除工作区文件
git rm mytext.txt删除版本库中文件,并且git commit
致谢:
廖雪峰大大的git教程