比如我现在在工作区新建一个文件叫test.html,然后git status:
git检测到这个新添加的文件,提示通过add加入暂存区。
下面执行:
git reset --hard
貌似没有执行什么,再看git status:
还是刚添加文件时的git status提示,新添加的test.html没有被删除。
现在执行:
git add dist/test.html
在查看git status状态:
新添加的test.html放入暂存区,下面执行:
git reset --hard
再看git status,工作区和暂存区全部干净了,新添加的test.html也没有了。
总结下两次操作的区别:
同样是新建了一个test.html文件
第一种是直接git reset --hard,新建test.html文件在工作区被保留
第二种是先add这个新建test.html文件,被添加到暂存区,然后git reset --hard,工作区的test.html文件也被删除了。
如果git reset --hard是拿上次提交的记录来覆盖工作区和暂存区的话,那么第一种情况时,test.html就应该被删除。如果是git reset --hard不对没有被追踪的文件进行处理的话,第二种情况下,test.html在工作区不会被删除。
自己已经晕了,等git来解答,我觉着这很可能是git的一个bug。
git reset --hard adalah untuk menetapkan semula kandungan kawasan pementasan dan ruang kerja kepada versi yang ditunjukkan oleh HEAD.
Jadi dalam kes kedua, test.html di kawasan pementasan dan kawasan kerja anda hilang.
Bagi kes pertama, jika anda melihat dengan teliti pada gambar pertama, ia menunjukkan bahawa test.html adalah fail Tidak Dijejaki, bermakna fail itu belum dikesan, jadi sudah tentu ia tidak akan dipadamkan.
git reset
Ia mempengaruhi Peringkat dan kawasan Kerja (anda sendiri yang mengatakannya), jadi bukan Git mempunyai pepijat, tetapi anda tidak memahami konsep asas.1. Untuk membatalkan kawasan storan sementara, gunakan git reset. Jangan cuba --hard
2