1 问题描述
git pull
时失败,报Please move or remove them before you merge
。结果git status
显示有一堆不太想提交的Untracked files
(未跟踪的文件)。
- 那么,
Untracked files
文件状态的文件,是什么?一般又如何处理呢?
2 原因分析
我们要真正弄明白问题的原因,我们就要先知道文件的几个状态。
- git在未commit之前有三种状态:
- Untracked files 未跟踪
- Changes not staged for commit 未提交的更改
- Changes to be committed 提交的更改
- Q: 什么文件会是未跟踪的呢?
- Ans : 那些新创建的或从未add过的文件就是未跟踪的。
- Ans : 此时有几种情况:
情况1 我们创建了准备提交上去的,这种好办只要add了就可以了。———— add 之
情况2 必须放在git工具目录中,但又不能提交的,比如保存了数据库密码的配置文件等的东西。 ———— 忽略之
情况3 我们不准备提交、又确实没啥没用的。————清理之
3 解决方法
按需选择合适的解决方法。
情况1:Add、Commit需提交的文件
git add textUntrackedFiles.txt
git commit -m "commit message..."
情况2:自动忽略(.gitignore
)关键文件
- 在git工作区的根目录下创建一个特殊的
.gitignore
文件,然后把要忽略的文件名填进去,git就会自动忽略这些文件。
刚刚那个文件被忽略了。
情况3:清理掉不需要的文件
git clean
是从你的工作目录中删除所有没有tracked(未跟踪)过的文件。
要知道这个命令很危险,删除了就找不到了。但如果已
git add .
就不会被删除。
参数说明:
n
:显示将要被删除的文件以及目录d
:删除未被添加到git路径中的文件以及目录(将.gitignore文件标记的文件全部删除)。f
:强制执行(只会删除文件)x
:删除没有被track的文件
- 使用案例
//是一个演习,告诉你那些文件会被删除,不会真正删除
git clean -n
//删除当前目录下所有没有track过的文件,.gitignore文件里指定的不会删除。
git clean -f
//删除指定路径下的没有被track过的文件
git clean -f <path>
//强制删除所有没有被track过的文件和文件夹,
git clean -df
//强制删除所有没有被track过的文件(.gitignore文件里指定的也不能避免)
git clean -fx