场景
在日常操作中,错误的提交了一个本不属于代码库的文件或目录,几乎每个人都犯过。想要删掉这些文件或目录,可以有以下几种选择:
- 只删除文件,但不删除历史记录
1
2
3
4
|
git rm <file>
git rm -r <directory>
git commit -m "remove file or directory"
|
git rm <file>
git rm -r <directory>
git commit -m "remove file or directory"
注意:上面的操作,只在最新版本中删除了对应的文件和目录,在git库中,切换到上一个版本,文件和目录依然存在。
- 既要删除文件,还要删除历史记录
上面的命令执行完毕后,工作区中的内容不会被更新。
- 在同一个提交中,既包含有效修改,也包含垃圾文件
1
2
3
4
|
git reset HEAD^
rm -rf <file or directory>
git add file1 file2 file3
git commit -m "commit msg"
|
git reset HEAD^
rm -rf <file or directory>
git add file1 file2 file3
git commit -m "commit msg"
上面的reset操作由于没有更新工作区中的文件,因此可以继续执行git commit
命令,将有效的修改继续提交到库中。
多做一步
如果垃圾文件是随时可能产生的,例如编译中间文件(例如.o文件),文件系统生成的辅助文件(例如Mac系统中的.DS_Store),最好通过下面的方式告知git,在每次检查的时候忽略掉这些文件或者目录:
1
2
3
4
5
6
7
|
vim .gitignore
file1
directory1
git status -s
git add .gitignore
git commit -m "ignore some files and directories"
|
vim .gitignore
file1
directory1
git status -s
git add .gitignore
git commit -m "ignore some files and directories"