我有一个.gitignore
文件,它忽略了一些文件。我更新了.gitignore
文件(删除了一些文件名并添加了一些文件名)。这不会反映在git status
中。如何强制git更新这些更改,以便跟踪之前未跟踪的文件,反之亦然。
我试过这个question,但我的所有文件都没有被跟踪(根据我更新的.gitignore
)。 (简单来说,一旦.gitignore
被更新或删除,我如何强制git撤回文件。
答案 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
文件中删除所有文件名,然后添加此行!*.*
,然后add
和commit
。
<强>更新强>
简单,我将用一个例子来解释。假设您有一个已由git添加和跟踪的build
文件夹。现在您决定不跟踪此文件夹。
build
)添加到.gitignore
build
文件夹从现在开始,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
。在尝试忽略并删除相同的提交时,我在过去看到过一些时髦的行为。