`git reset --hard` 也重置被忽略的文件?

cyt*_*nny 9 git git-reset

我有一些文件曾经在 git 存储库中,但后来被忽略了。(主要是配置文件)但是,当我运行时git reset --hard,这些忽略文件上的更改也会重置,我确信 head 版本已经忽略了这些文件。

这是正常的吗?有没有办法git reset --hard忽略被忽略文件的更改?

Noa*_*oam 5

您还可以使用 git clean 删除所有被忽略的文件:

当您的 .gitignore 中有文件时,它们不会被考虑进行更改,但您仍然可能想删除它们,例如因为它们会使您的文件系统变得混乱。

虽然常规 git clean 也会忽略它们,但传递 -x 开关会改变:

git clean -x
Run Code Online (Sandbox Code Playgroud)

如果您想先看看会发生什么,请确保通过 -n 开关进行空运行:

git clean -xn
Run Code Online (Sandbox Code Playgroud)

通过传递 -f (在某些情况下强制清理;我认为默认情况下也是必需的)或 -d (删除目录)开关,清理更加困难:

git clean -xdf
Run Code Online (Sandbox Code Playgroud)

小心:您可能会忽略本地配置文件,例如database.yml,这些文件也会被删除。使用风险自负。

来源:https://makandracards.com/makandra/17529-git-how-to-remove-ignored-files-from-your-repository-s-directory


Hun*_*tro 4

当您已经提交了一个文件并随后忽略它时,您必须在单独的提交中再次删除该文件。

如果以后仍想使用该文件,则应事先备份它们。

cp <file> <file>.bak
Run Code Online (Sandbox Code Playgroud)

您可以像这样删除被忽略的文件:

git rm --cached <file>
git commit -m 'Remove ignored file'
mv <file>.bak <file>
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请查看这个问题