强制git更新.gitignore

问题描述 投票:20回答:4

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

我试过这个question,仍然没有跟踪我的所有文件(根据我更新的.gitignore)。 (简单来说,一旦.gitignore被更新或删除,我怎么能强制git收回文件)。

git gitignore
4个回答
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

UPDATE

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

  1. 将此文件夹(build)添加到.gitignore
  2. 删除build文件夹
  3. 提交您的更改

从现在开始,git将不会跟踪build文件夹。


52
投票

你必须先清除现有的git cache

  • git rm -r --cached .

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

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

1
投票

您可以通过删除遇到此问题的特定文件的缓存来解决此问题。您提到的问题发生在您提交一些特定文件一次然后在.gitignore中添加它们之后。

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

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


0
投票

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

您可以使用git ls-files查看git当前正在跟踪的文件。如果您有很多文件,可以使用git ls-files | grep hello.txt查找git是否正在跟踪该特定文件。

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

© www.soinside.com 2019 - 2024. All rights reserved.