我收到“以下未跟踪的工作树文件将被结帐覆盖...请在切换分支之前移动或删除它们”错误。
常见修补程序似乎是runat="server"
当我键入它时,没有任何错误,但是什么也没有发生。当我去检查另一个分支时,我只会遇到与上面相同的错误。
为什么git clean
绝对不做任何事情?
更新:
更多信息。 git clean
和git -n
做的完全一样……什么也没有。
答案 0 :(得分:4)
就像指定了其他注释一样,您确实需要添加-f标志。
但是您可能会遇到问题,并不是因为您没有指定--force,而是因为您位于另一个子目录中。
例如,如果我的git仓库位于/myrepo/.git
和/myrepo/untracked/file.txt子目录中的未跟踪文件,
但是我终端的当前工作目录是/ myrepo / src/。
git clean -fd将不起作用。您需要先运行CD到项目根目录。
TL; DR:git clean -fd显然仅清除终端当前工作目录及其下方的未跟踪文件和目录。
答案 1 :(得分:2)
这可能不是在OP情况下发生的情况。但是我有同样的问题。在我的情况下,未清除的目录是我添加的子模块,但随后我用git将其重置。我必须从.gitmodules
,.git/config
和.git/modules/<path to submodule>
中删除所有痕迹,以便git clean删除它,即使git status识别为未跟踪。
答案 2 :(得分:1)
尝试使用
git clean -fd
尝试保存更改,
git stash
如果您想使用所有更改,
git stash apply
答案 3 :(得分:1)
如果要清除未跟踪的文件,请使用以下命令。但是,在运行此命令之前请多加注意,因为它将擦拭您的工作区域,索引HEAD。
git reset --hard
我认为您的工作区域中存在gitignore的未跟踪目录或忽略的文件(构建文件)。您可以通过以下命令将其删除。
git clean -dfx
-d
除了删除未跟踪的文件,还删除未跟踪的目录。如果 未跟踪的目录由另一个Git存储库管理,它是 默认情况下未删除。如果确实要使用-f选项两次 删除这样的目录。
-f --force
如果Git配置变量clean.requireForce未设置为false, git clean将拒绝删除文件或目录,除非 给定-f,-n或-i。 Git将拒绝使用.git删除目录 子目录或文件,除非给出第二个-f。
-x
不要使用从.gitignore(每个目录)>和$ GIT_DIR / info / exclude中读取的标准忽略规则,但仍要使用-e>选项提供的忽略规则。这允许删除所有未跟踪的文件,包括构建文件 产品。可以使用它(可能与git reset结合使用)来 创建一个原始的工作目录以测试干净的构建。
有关更多信息,git clean
答案 4 :(得分:0)
在我看来,您需要指定-n或-f。在手册页中:
OPTIONS
-f, --force
If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or
directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second
-f is given.