GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(一):https://developer.aliyun.com/article/1426876
四、修改文件
- git其实管理的是修改,而不是文件
- 我们先修改了
ReadMe
4.1 查看工作区的状态
- 我们查看当前工作区的状态
git status
- 那我们想查看修改了哪些内容呢?
git diff 文件名
- 这个时候我们再提交一下
git add ReadMe
- 查看状态
git status
- 这个时候就再提交
git commit -m 'add modify ReadMe file'
- 再查看
git status
五、版本回退
- 刚开始文件里的内容只有一行,后来添加了两行
- 对于这个文件来说是有两个版本的
- 这里的回退命令是
git reset
可以指定某一次提交的版本 - git reset 命令语法格式为:
git reset [--soft | --mixed | --hard] [HEAD]
- –mixed 为默认选项,使⽤时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
- –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
- –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
- HEAD 说明:
◦ 可直接写成 commit id,表示指定退回的版本
◦ HEAD 表示当前版本
◦ HEAD^ 上一个版本
◦ HEAD^^ 上上一个版本
◦ 以此类推… - 可以使用 ~数字表示:
◦ HEAD~0 表示当前版本
◦ HEAD~1 上一个版本
◦ HEAD^2 上上一个版本
◦ 以此类推…
- 查看日志
git log --pretty=oneline
- 回退到最初版本
git reset --hard eea6e0091277b0e3de6739d0cede91333284b6e7
- 可以看到一旦回到这一次,我们后面创建的文件都会被删除
- 我们再来看文件的内容
cat ReadMe
- 查看日志
git log --pretty=oneline
- 那有人说我又后悔了怎么办?
- 想要再回退回去
- 我们刚刚打印过这一个最新的版本我们就回退到这个版本
git reset --hard b842e9f3f8a267b0957389abae0dbc159d12fd43
- 我们再来看一下当前目录下
- 文件回来了,文件里的内容也会来了
- 再来打印这个日志
- 这个log也回来了
git log --pretty=oneline
- 那我回退了最初的版本后,找不到那个字符串了怎么办?
- 我们还有一种方法
- 查看
git reflog
- 回退版本
git reset --hard b842e9f
- 这样就可以回退回去了
- 那么这里的版本回退为什么会这么快呢?
- 是因为有一个
HEAD
指针
六、撤销修改
- 如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。
6.1 情况一:对于工作区的代码,还没有add
- 我们先对ReadMe进行修改
- 我们想撤销我们的代码,我们可以重新再次编辑删除掉那一行代码,就可以了
- 那写了很多呢?想一次性撤销,那怎么办呢?接下来我们来看~~
- 查看修改了哪些内容
git diff ReadMe
- 想要一次撤销,我们执行以下命令
git checkout -- ReadMe
- 这里的
--
就是回退到最近一次add或者commit的操作 - 我们再次打印,新增的那一行就没有了
6.2 情况二:已经add ,但没有commit
- add 后还是保存到了暂存区呢?怎么撤销呢?
- 让我们来回忆一下学过的
git reset
回退命令,该命令如果使用--mixed
参数,可以将暂存区的内容退回为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!
git reset HEAD ReadMe
HEAD
代表当前版本HEAD^
代表上一个版本HEAD^^
代表上一个版本
- 这个时候再进行情况一的回退
git checkout -- ReadMe
6.3 情况三:已经add ,并且也commit 了
- 我们可以
git reset --hard HEAD^
回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面章节会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了 - 我们先修改文件,然后添加文件【add】【commit】
- 然后修改
git reset --hard HEAD^
七、删除文件
- 删除文件
git rm file
git commit -m '记录'