## git版本回滚
> git reset --hard commit_id //commit_id为查看提交版本id号
> git log //提交日志打印
> git reflog // 返回回滚前版本 使用该命令可查看回滚之前版本的id
**回滚可通过log日志打印commit结果,后悔了也可以通过 reflog获取操作日志,找到回滚前版本id进行reset操作(此时会出现一个题,若回滚后已提交至远程仓库,现在回到回滚前版本则回导致remote冲突,如何解决?)**
***
##工作区与版本库
>git 与 svn 不用的地方就是有一个暂存区的概念
1.需要提交的文件修改通通放到暂存区 git add
2.提交暂存区的所有修改至版本库 git commit
```C
git add [filename]/. //添加修改文件到暂存区
git commit -m '提交标识' // 提交当前分支到版本库
git diff HEAD -- [filename] //查 看工作区文件与版本库最新版本的区别
```
一旦提交了commit工作区状态就变成clean 因为此时工作区与版本库是相同的
**注意:每次修改,如果不用git add到暂存区,那么在commit提交时就不会提交到版本库中**
-----
##撤销修改
文件修改后 输入git status 查看状态
```
PS C:\Users\clouds\Desktop\git-learnning> 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.md
no changes added to commit (use "git add" and/or "git commit -a")
```
此时可以看到git提示
```
(use "git checkout -- <file>..." to discard changes in working directory)
使用git checkout -- <file>... 取消工作区对该文件的修改
两种情况
1.文件自修改后还没有被放到暂存区,则回退至上次提交版本库的文件状态
2.文件修改后已提交至暂存区,则回去至暂存区状态.
```
** 总结:
1.使用checkout回退会选择最近一次add 或 commit 操作时的文件状态
2.当你修改了工作内容并且已提交至暂存区内,此时想要丢弃修改,第一步使用 git reset HEAD filename ,再使用git checkout -- filename 进行回退
3.当提交了文件到版本库时,想要取消则直接使用 git reset进行版本库回退**
----
## 文件删除
命令: git rm filename
>工作区内通过rm删除文件,工作区和版本库不一致时,通过git status可以查看被删除的文件
```
PS C:\Users\clouds\Desktop\git-learnning> rm add.txt
PS C:\Users\clouds\Desktop\git-learnning> git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: add.txt
no changes added to commit (use "git add" and/or "git commit -a")
此时,有两种做法:
1. 通过 git rm filename 从版本库删除该文件 并且进行commit提交版本
2. 根据git提示 (use "git checkout -- <file>..." to discard changes in working directory)
使用该命令 撤销删除操作
```
**在文件被误删时,大可不必担心,通过checkout可以恢复,但需要注意的是,若checkout进行操作,会丢失,在最近一次commit的版本之后对工作区的修改**
## 总结
> 以上操作可以解决开发中文件备份以及文件丢失的问题,可以舍弃掉开发中需要不断copy不同版本代码的习惯啦~ 使用git优雅的进行版本迭代.
- 01.let-const
- 02.对象数组解构&赋值
- 03.字符串扩展,数值扩展,数组扩展
- 04.数组扩展
- 05.对象扩展
- 06.06.Symbol原始数据类型
- 07.set数据结构
- 08.map数据结构
- 09.proxy与Reflect
- 10.类
- 11.Promise
- 12.Iterator(迭代器)
- 13.Generator(生成器)
- 14.module与模块化
- 15.es6学习总结
- 记录- Vue拖拽实例
- 记录-git使用天坑之分支切换
- node -- session & cookie & localStorge
- 18.12关于前端战略技术储备与问题反馈
- Vue组件通信方式总结以及遇到的问题
- 01.版本回溯以及文件修改
- 02.远端控制
- 03.分支管理
- node 入门 留言板
- nodejs模块与 commonjs 规范
- 19年技术发展规划
- JS错误处理 -> 提升程序健壮性
- Git 基本使用
- 18年年终总结