一.掌握工作区状态
1.先修改readme.tet的内容
Git is a good software
Git is a very good software
2.使用git status命令查看有文件被修改过
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git status On branch master Changes not staged for commit: //文件被修改了
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: readme.tet no changes added to commit (use "git add" and/or "git commit -a")//但是还没有提交
3. git diff查看修改内容
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git diff
warning: in the working copy of 'readme.tet', LF will be replaced by CRLF the next time Git touches it
diff --git a/readme.tet b/readme.tet
index 6ffa795..995a744 100644
--- a/readme.tet
+++ b/readme.tet
@@ -1,3 +1,2 @@
Git is a good software
-Git is very good
-
+Git is very good software
最后再将之提交到仓库
同样的,先add: $ git add readme.txt
多一步,再次运行status查看仓库状态
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: readme.tet
最后commit提交
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git commit -m"add software"
[master 736eff3] add software
1 file changed, 1 insertion(+), 2 deletions(-)
提交后再次status查看当前仓库状态
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean//当前没有需要提交的修改,而且工作目录干净
二.版本回退
1.多次使用add和commit修改文件
不断对文件进行修改,然后不断提交修改到版本库里,每当你觉得文件修改到一定程度的时候,就可以用commit保存一下。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失
使用git log 命令查看历史记录此时是从最近到最远的版本展示
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git log
commit c695ae7cb1104d50b2d143d98216c0beff51fbf6 (HEAD -> master)
Author: LinFeng <2010947927@qq.com>
Date: Thu Aug 4 21:38:44 2022 +0800
add in the world
commit 736eff3df67cd59575539f3eef0f7d2bbd60e49c
Author: LinFeng <2010947927@qq.com>
Date: Thu Aug 4 21:36:51 2022 +0800
add software
commit 5ca1391a8db454de616feb9b413151b6f32f0030
Author: LinFeng <2010947927@qq.com>
Date: Thu Aug 4 21:20:14 2022 +0800
wrote a readme file
嫌输出信息太多,看得眼花缭乱的,可以试试加上 $ git log --pretty=oneline
凌风@▒▒▒plus MINGW64 /d/GitWarehouse/learngit (master)
$ git log --pretty=oneline
c695ae7cb1104d50b2d143d98216c0beff51fbf6 (HEAD -> master) add in the world
736eff3df67cd59575539f3eef0f7d2bbd60e49c add software
5ca1391a8db454de616feb9b413151b6f32f0030 wrote a readme file
类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示
每提交一个新版本,实际上Git就会把它们自动串成一条时间线
版本回退: Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,回退过多,比如100,就写成HEAD~100
小结: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。