强制git更新.gitignore

时间:2016-07-19 05:36:05

标签: git gitignore

我有一个.gitignore文件,它忽略了一些文件。我更新了.gitignore文件(删除了一些文件名并添加了一些文件名)。这不会反映在git status中。如何强制git更新这些更改,以便跟踪之前未跟踪的文件,反之亦然。

我试过这个question,但我的所有文件都没有被跟踪(根据我更新的.gitignore)。 (简单来说,一旦.gitignore被更新或删除,我如何强制git撤回文件。

5 个答案:

答案 0 :(得分:52)

您必须先清除现有的git cache

  • git rm -r --cached .

清除现有缓存后,添加/暂存当前目录中的所有文件并提交

  • git add .
  • git commit -m "Suitable Message"

答案 1 :(得分:5)

有效

//首先提交所有未完成的代码更改,然后运行以下命令:

git rm -r --cached .

//这将从索引(临时区域)中删除所有更改的文件,然后运行:

git add .

//提交

git commit -m "Atualizando .gitignore para..."

答案 2 :(得分:4)

如果您要添加所有文件,请删除.gitignore文件中的所有文件名,而不是.gitignore文件和commit,然后尝试

git config --global core.excludesfile ~/.gitignore_global

git会忽略某些文件,具体取决于操作系统(如Windows中的.dll)。更多information

现在

git add .

git status

git commit -m "your message"

你可以尝试一个简单的黑客,它可能会或可能不会工作。从.gitignore文件中删除所有文件名,然后添加此行!*.*,然后addcommit

<强>更新

简单,我将用一个例子来解释。假设您有一个已由git添加和跟踪的build文件夹。现在您决定不跟踪此文件夹。

  1. 将此文件夹(build)添加到.gitignore
  2. 删除build文件夹
  3. 提交您的更改
  4. 从现在开始,git不会跟踪build文件夹。

答案 3 :(得分:1)

您可以通过删除遇到此问题的特定文件的缓存来解决此问题。 如果您提交了一些特定文件,然后在 .gitignore 中添加它们,则会出现您提到的问题。

git rm -r --cached <your_file.extension>
git commit -am "Suitable Message"

上面的@ sharvan40提出了相同的解决方案,但您不需要删除所有文件的缓存。它为您的所有文件创建一个新的提交。

答案 4 :(得分:0)

假设您当前的工作目录为空。

您可以使用role=dialog查看git当前正在跟踪的文件。如果您有大量文件,可以使用git ls-files查找git是否正在跟踪该特定文件。

如果它正在跟踪它,那么使用git ls-files | grep hello.txt来取消它(正如Tim在他的comment中提到的那样)。也许首先提交未跟踪状态,然后在下次提交时将其添加到git rm hello.txt。在尝试忽略并删除相同的提交时,我在过去看到过一些时髦的行为。