在学习git的过程中,checkout和reset都能撤销单个文件的修改。
命令格式:
* git reset HEAD <file>
* git checkout -- file
下面的例子
```git
git reset HEAD readme.txt
```
```git
git checkout-- readme.txt
```
### 之前总是搞不清楚两者的区别,这一次查阅资料进行了总结。
* checkout 使得工作区和暂存区保持一致,如果暂存区没有内容则和仓库保持一致。
* reset 使得工作区和仓库保持一致
这样的特性表现出来就是,checkout能丢且当前工作区的修改。reset会丢弃工作区和暂存区的修改。这也可以理解checkout的意思有确认的意思,也就是说,checkout会进行检查,保证不会把暂存区的内容丢弃,并且总是优先和暂存区保持一致。reset就不会检查,直接丢弃暂存区的内容。
这里我要提一下,我认为git的一个版本完整的周期是:
head==》add==》commit
head就是版本初始状态。
add就是获得下一个版本前的缓存状态,告诉git你的哪些文件进行了修改,git将这些修改缓存在暂存区。
commit在github中是保存的意思,对于版本来说,这是产生一个新版本的标志。一旦commit,也就是说一个新的版本已经产生,你已经进入到了一个新的版本周期。
### 参考博客:
https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536
网友评论