强制 git 更新. gitignore

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

我已经试过这个 有个问题,仍然没有跟踪我的所有文件(根据我更新的 .gitignore)。(简单地说,如何在更新或删除 .gitignore后强制 git 收回文件)。

129851 次浏览

You will have to clear the existing git cache first.

Remove the cache of all the files

  • git rm -r --cached .

Remove the cache of specific file

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

Once you clear the existing cache, add/stage file/files in the current directory and commit

  • git add . // To add all the files
  • git add <file_name.ext> // To add specific file
  • git commit -m "Suitable Message"

As pointed out by Scott Biggs in comment that "This works for both adding a file that was once ignored as well as ignoring a file that was once tracked"

Assuming here that your current working directory is empty.

You can check what files git is currently tracking by using git ls-files. If you have a lot of files, you can use git ls-files | grep hello.txt to find if git is tracking that specific file.

If it is tracking it, then use git rm hello.txt to untrack it (as Tim mentioned in his comment). Perhaps commit that untracked state first and then add it in to your .gitignore on your next commit. I have seen some funky behavior in the past when trying to ignore and remove in the same commit.

If you want to add all files, delete all filenames from .gitignore file, not the .gitignore file and commit it, then try

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

Some files are ignored by the git depending on the OS (like .dll in windows). For more information.

Now

git add .


git status


git commit -m "your message"

Or

You can try a simple hack, it may or may not work. Delete all filenames from .gitignore file and add this line !*.*, then add and commit.

UPDATE

Simple, I'll explain with an example. Say you have a build folder which is already added and tracked by git. Now you decide not to track this folder.

  1. Add this folder (build) to .gitignore
  2. Delete build folder
  3. Commit your changes

From now on git will not track build folder.

You can resolve this issue by deleting the cache of those specific files where you are getting this issue. The issue you mentioned occurs when you have committed some specific files once and then you are adding them in .gitignore later.

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

Same solution is proposed by @sharvan40 above, but you don't need to remove the cache for all the files. It creates a new commit for all your files.

It works

//First commit any outstanding code changes, and then, run this command:

git rm -r --cached .

//This removes any changed files from the index(staging area), then just run:

git add .

//Commit

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