强制git更新.gitignore


70

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

我已经试过这个问题,但仍然无法跟踪我的所有文件(根据我的更新.gitignore)。(简单来说,一旦.gitignore更新或删除,如何强制git撤回文件)。


2
Gitignore不适用于已经被跟踪的文件。在这种情况下,您需要git rm先将文件添加到中.gitignore
Tim Biegeleisen '16

Answers:


10

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

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

git会根据操作系统忽略某些文件(例如Windows中的.dll)。有关更多信息

现在

git add .

git status

git commit -m "your message"

要么

您可以尝试一个简单的技巧,它可能会或可能不会起作用。从.gitignore文件中删除所有文件名,并添加此行!*.*,然后按addcommit

更新

很简单,我将举例说明。假设您有一个build已经由git跟踪的文件夹。现在,您决定不跟踪此文件夹。

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

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


10
“删除.gitignore文件中的所有文件名,而不是.gitignore文件并提交”,这是什么意思?
m93a

如果您对此答案感到困惑,请参阅@ Shravan40的答案:stackoverflow.com/a/38451183/1886357
eric

@ m93a,请参阅更新部分,按照步骤操作
Saahithyan Vigneswaran

164

您将必须先清除现有的git cache

删除所有文件的缓存

  • git rm -r --cached .

删除特定文件的缓存

  • git rm -r --cached <file_name.ext>

清除现有缓存后,在当前目录中添加/暂存一个或多个文件并提交

  • git add . //添加所有文件
  • git add <file_name.ext> //添加特定文件
  • git commit -m "Suitable Message"

正如Scott Biggs在评论中指出的那样:“这既可以添加曾经被忽略的文件,也可以忽略曾经被跟踪的文件”


1
我已经明确提及(并链接了)这对我的问题没有帮助

1
是否git status跟踪.gitignore文件?
Shravan40 '16

2
要停止跟踪当前跟踪的文件,请使用git rm --cached
小丑

@Shravan.gitignore从本地PC删除后,否

2
请注意,这既适用于添加曾经被忽略的文件,也适用于忽略曾经被跟踪的文件。
SMBiggs

5

有用

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

git rm -r --cached .

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

git add .

//承诺

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

3

您可以通过删除要获取此问题的那些特定文件的缓存来解决此问题。当您一次提交某些特定文件,然后稍后将它们添加到.gitignore中时,就会出现您提到的问题。

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

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


0

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

您可以使用来检查git当前正在跟踪哪些文件git ls-files。如果文件很多,可以使用git ls-files | grep hello.txtgit是否跟踪该特定文件。

如果它正在跟踪它,则用于git rm hello.txt取消跟踪它(如Tim在其评论中所述)。也许先提交未跟踪的状态,然后.gitignore在下一次提交时将其添加到您的状态中。过去,在同一提交中尝试忽略和删除时,我已经看到一些时髦的行为。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.