如何理解git checkout -- file和git reset HEAD -- file

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374831943254ee90db11b13d4ba9a73b9047f4fb968d000git



首先须要知道工做区(working diretory)和暂存区(Stage)这两个概念。工做区的概念不只包含你实际更改的文件还应当包括当前修改但未add存入暂存区的文件变化信息,暂存区的做用则是临时存储文件的变化信息,在git add file操做以后,暂存区中将记录file文件上的修改信息。暂存区的存在更细化了时间节点,要知道commit的每每是有重大改变的版本或者是在一次修改工做总体完成以后才使用commit。而在这之间须要保存的修改,天然须要一个缓存区暂时存放。
廖雪峰的git教程中在“撤销修改”部分中,提到了几种情景和相应的git checkout与git reset命令。经过个人思考,在这个更直接地分析这两个命令的含义。
  git checkout -- file;撤销对工做区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工做区对应文件file;这个命令改变的是工做区
  git reset HEAD -- file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工做区,这意味着在无任何其余操做的状况下,工做区中的实际文件同该命令运行以前无任何改变
对照廖雪峰的git教程中相应的例子,能更好地体会上述总结。缓存

相关文章
相关标签/搜索