前提条件:已经将文件提交。
(1)修改你提交的文本的内容,运行git status
命令看看结果:能够查到文件已经修改但未提交;
如果你已经修改过,但忘记是怎么修改的,用git diff查看是怎么修改的;
提交修改和提交新文件是一样的步骤:git add 文件名称 ----》中间插一步 git status,检查一下要提交的东西包不包括你想要的文件,存在的话就运行 git commit 文件名,所有的要提交的,都已被提交,且目录是干净的
小结
要随时掌握工作区的状态,使用
git status
命令。如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
(2)用Git log命令查看修改的历史记录
git log 命令显示从最近到最远的提交日志
当然如果提交的次数过多,可能显示的信息较多的话,加上--pretty=oneline
参数:
(我快要疯了,打了三遍才对,要看准字母哟!
一大串类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。
小提示:每次提交一个新版本,实际都会自动串成一条时间线。
(3)版本回退
注意:在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
使用git reset --hard HEAD^(--hard放心使用)
查看返回的版本内的内容:cat 文件名
(可能是中文的原因显示不出来,具体我也不清楚)
还可以接着回退,用git log再看看现在版本库的状态
如果已经回退了,你又想返回你回退前的最新怎么办
只要命令窗口没有关闭过,你可以往上找该版本的commit id,然后就可以回去
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
查看learn.txt内的内容
若你进行了上述版本回退操作的话,后悔了,当你用$ git reset --hard HEAD^
回退到add distributed
版本时,再想恢复到append GPL
,就必须找到append GPL
的commit id。Git提供了一个命令git reflog
用来记录你的每一次命令:
然后就可以查到当前append GPL的commit id是1094adb,然后在执行git reset --hard 1094abd,就可以乘坐时光穿梭机了!!!
小结:
现在总结一下:
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。cat 文件名,查看文件的内容