查看当前仓库的状态
$ git status
例如:下述代码表示,当前文件被修改过,但是还没提交
C:\Users\Simple\Desktop\gitdir>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: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
查看上次修改的内容
$ git diff
例如:my update
后面就是修改的内容
C:\Users\Simple\Desktop\gitdir>git diff
diff --git a/test.txt b/test.txt
index 77d0734..eefb4c4 100644
--- a/test.txt
+++ b/test.txt
@@ -1,12 +1,3 @@
my first git dir
my update
-one
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten
+
确认修改的内容后,就可以直接提交,依旧是两步
$ git add "文件名"
$ git commit -m "提交说明"
此时可以再看一下仓库当前的状态
$ git status
如下输出内容:当前状态显示没有需要提交的修改
C:\Users\Simple\Desktop\gitdir>git add test.txt
C:\Users\Simple\Desktop\gitdir>git commit -m "my update"
[master db457be] my update
1 file changed, 1 insertion(+), 10 deletions(-)
C:\Users\Simple\Desktop\gitdir>git status
On branch master
nothing to commit, working tree clean
版本回退
首先,我们要清楚我们需要回退到
哪个版本
,如果提交的数据过多,我们也不可能记得我们需要回退的版本,所以,我们先要找到回退的版本
1、查看提交历史
$ git log
//当前命令会打印出我们所有的提交历史记录
例:
C:\Users\Simple\Desktop\gitdir>git log
commit db457be7f9512b67f1eec6e4a97a2d4becea3117 (HEAD -> master)
Author: simple <xxx@qq.com>
Date: Sun Apr 7 20:07:15 2019 +0800
my update
commit 3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc
Author: Simple <xxx@qq.com>
Date: Thu Apr 4 10:22:43 2019 +0800
im ok
commit 1e3463e48be90c79f88d587feb8836a1aec8a838
Author: Simple <xxx@qq.com>
Date: Fri Mar 29 23:31:07 2019 +0800
this is test.txt
commit b9622e94cdd127356f874bb4927205700717fe29
Author: Simple <xxx@qq.com>
如果打印出的数据过多,不便于我们查找版本,可以带上--pretty=oneline
参数
$ git log --pretty=oneline
例:这样打印出的数据就更好查找了
C:\Users\Simple\Desktop\gitdir>git log --pretty=oneline
db457be7f9512b67f1eec6e4a97a2d4becea3117 (HEAD -> master) my update
3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc im ok
1e3463e48be90c79f88d587feb8836a1aec8a838 this is test.txt
b9622e94cdd127356f874bb4927205700717fe29 update three git
da64cff3e0a9a71ec7965c032c6814d1e171e642 update two git
76109ff8ecc69e36ea4d9b7b8b706f5816f4fcc5 update first git
在Git中,HEAD
代表的时当前的版本,那么上一个版本就是HEAD^
,上上个就是HEAD^^
,如果回退的版本较多,可以写成HEAD~数量
回退到上一个版本,使用git reset
C:\Users\Simple\Desktop\gitdir>git reset --hard HEAD^^
HEAD is now at 3a0e28b im ok
再次查看提交记录,当前显示im ok
为最新版本,成功回退
C:\Users\Simple\Desktop\gitdir>git log --pretty=oneline
3a0e28b0eaeddaa869e2b5da28b5cd2e7f9313cc (HEAD -> master) im ok
1e3463e48be90c79f88d587feb8836a1aec8a838 this is test.txt
b9622e94cdd127356f874bb4927205700717fe29 update three git
da64cff3e0a9a71ec7965c032c6814d1e171e642 update two git
76109ff8ecc69e36ea4d9b7b8b706f5816f4fcc5 update first git
如果回退版本后,后悔怎么办呢,毕竟Git允许你后悔,还是有解决的方法的,但是需要找到版本的ID
,如果当前命令窗口没有关闭的话,我们可以向上查找之前打印出的版本ID
,
根据版本ID回退
C:\Users\Simple\Desktop\gitdir>git reset --hard db457b(版本号可以只写前几位,但也不能过短)
HEAD is now at db457be my update
如果已经关闭当前命令窗口
,我们又该如何查找之前版本的版本号呢?我们可以用到git reflog
命令,该命令可以记录我们每一次的命令
,这样我们就可以同上述方法一样
回退到指定ID
的版本
C:\Users\Simple\Desktop\gitdir>git reflog
db457be (HEAD -> master) HEAD@{0}: reset: moving to db457b
3a0e28b HEAD@{1}: reset: moving to HEAD^
db457be (HEAD -> master) HEAD@{2}: commit: my update
3a0e28b HEAD@{3}: commit: im ok
1e3463e HEAD@{4}: commit: this is test.txt
b9622e9 HEAD@{5}: commit: update three git
da64cff HEAD@{6}: commit: update two git
76109ff HEAD@{7}: commit (initial): update first git