一、git rm/checkout
当未在.gitignore文件中设置不需要跟踪的文件类型时,在使用git add .命令时,会把工程中所有未跟踪的文件添加到git索引中,如果此时意识到有些文件不需要commit时,可以把文件从索引中删除:
git rm --cached + 文件名
或者
git reset HEAD + 文件名
在索引中删除后,该文件在工作目录中依然存在。
注意:
1. 在未执行git commit前,若直接使用git rm + 文件名,则同时会把文件从索引和工作目录中删除,且工作目录中的文件无法恢复。
2. 在执行git commit后,若直接使用git rm + 文件名,虽然同时会把文件从索引和工作目录中删除,但是工作目录中的文件可以被恢复,可通过如下命令:
git checkout HEAD -- + 文件名
二、git reset
该命令的作用为修改git本地提交历史。
git reset选项的影响:
| 选项 | HEAD | 索引 | 工作目录 |
|---|---|---|---|
| –soft | 是 | 否 | 否 |
| –mixed | 是 | 是 | 否 |
| –hard | 是 | 是 | 是 |
注:缺省时默认选项为–mixed。
例如:提交历史为A—>B,在本地修改代码后commit提交,则提交历史变为A—>B—>C,此时发现修改的代码有误,但是又改动了很多地方,不想一 一找了,此时有一个简单的方法把提交历史退回到B,使用如下命令即可:
git reset --hard B
此时,HEAD指针,索引,工作目录中的文件状态都会变成提交B时的状态,提交C的所有状态完全丢失。
本文详细介绍了Git中的两个重要命令:git rm/checkout 和 git reset 的用法及注意事项。包括如何从索引中移除文件而不删除工作目录中的文件,如何在未提交前和已提交后恢复文件,以及如何使用git reset命令回退到指定的提交。

9899

被折叠的 条评论
为什么被折叠?



