我有一个.gitignore
文件,它忽略一些文件。我已经更新了.gitignore
文件(删除了一些文件名并添加了一些文件名),但是在git status
中没有反映。我该如何强制Git更新这些更改,以便追踪之前未追踪的文件,反之亦然。
我尝试过这个问题,但我所有的文件仍然没有被追踪(根据我的更新的.gitignore
)。 (简单来说,当.gitignore
文件被更新或删除后,我该如何强制Git重新追踪文件。)
首先,您需要先清除现有的git cache
。
清除所有文件的缓存
git rm -r --cached .
清除特定文件的缓存
git rm -r --cached <file_name.ext>
一旦您清除了现有的缓存,就可以将当前目录中的文件添加/暂存并提交更改了。
git add .
// 添加所有文件git add <file_name.ext>
// 添加特定文件git commit -m "适当的描述信息"
正如Scott Biggs在评论中指出的那样:"这适用于同时添加曾经被忽略过的文件和忽略曾经被跟踪过的文件。"
git status
是否会追踪 .gitignore
文件? - Shravan40git rm --cached
。 - joker.gitignore
文件后,没有任何变化。 - user4576114它有效
//首先提交任何未完成的代码更改,然后运行此命令:
git rm -r --cached .
//这将从索引(暂存区)中删除任何已更改的文件,然后只需运行:
git add .
//提交
git commit -m "Atualizando .gitignore para..."
如果你想将所有文件都加入版本控制,需要从.gitignore
文件中删除所有的文件名,而不是删除.gitignore
文件本身,并将其commit
。然后尝试以下命令:
git config --global core.excludesfile ~/.gitignore_global
有些文件可能会被Git忽略,这取决于操作系统(例如Windows中的.dll文件)。请参阅此处了解更多信息。
现在
git add .
git status
git commit -m "your message"
或者
你可以尝试一个简单的技巧,它可能奏效也可能不奏效。从.gitignore
文件中删除所有的文件名,并添加此行 !*.*
,然后执行add
和commit
命令。
更新
很简单,我将通过一个示例来解释。假设您有一个 build
文件夹已经被 Git 添加并跟踪。现在您决定不再跟踪此文件夹。
build
) 添加到 .gitignore
中build
文件夹从现在开始,Git 将不再跟踪 build
文件夹。
git rm -r --cached <your_file.extension>
git commit -am "Suitable Message"
假设您当前的工作目录为空。
您可以使用git ls-files
检查git当前正在跟踪哪些文件。如果您有很多文件,可以使用git ls-files | grep hello.txt
查找git是否正在跟踪该特定文件。
如果它正在跟踪它,则使用git rm hello.txt
取消跟踪它(如Tim在他的评论中提到的)。也许先提交该未跟踪状态,然后在下一次提交时将其添加到您的.gitignore
中。我曾经看到过一些奇怪的行为,当尝试在同一次提交中忽略和删除时。
git rm
命令删除文件,然后再将其添加到.gitignore
中。 - Tim Biegeleisen