太久没有发博客了,来刷一下存在感
git rm
同时从工作区和暂存区删除文件,即本地的文件也被删除了,会保留操作记录。
**注意:**最后要执行git commit
才真正提交到git仓库
如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f
(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被 Git 恢复。
git rm --cached
从暂存区中删除文件。但是本地文件还存在, 只是不希望这个文件被版本控制。
rm
就是单纯地删除了物理文件。
即使已经通过 rm
将某个文件删除掉了,也可以再通过 git rm
命令重新将该文件从 git
的记录中删除掉。同样也是需要git commit
。
如果用 rm
命令删除了大量文件,再逐个用 git rm
就显得麻烦了,这时候可以用 git commit -am "abc"
删除错误提交的commit
有时,不仅添加到了暂存区,而且commit到了版本库,这个时候就不能使用git rm了,需要使用git reset命令。
错误提交到了版本库,此时无论工作区、暂存区,还是版本库,这三者的内容都是一样的,所以在这种情况下,只是删除了工作区和暂存区的文件,下一次用该版本库回滚那个误添加的文件还会重新生成。
这个时候,我们必须撤销版本库的修改才能解决问题!
git reset有三个选项,–hard、–mixed、–soft。
//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID
//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID
//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID
(1)如果你是在提交了后,对工作区的代码做了修改,并且想保留这些修改,那么可以使用git reset --mixed 版本库ID,注意这个版本库ID应该不是你刚刚提交的版本库ID,而是刚刚提交版本库的上一个版本库。
(2)如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。
(3)为什么不使用–soft呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上述提到的git rm