If you want to permanently ignore these files, a simple way to add them to .gitignore
is:
git ls-files --others --exclude-standard >> .gitignore
This will enumerate all files inside untracked directories, which may or may not be what you want.
In case you are not on Unix like OS, this would work on Windows using PowerShell
git status --porcelain | ?{ $_ -match "^\?\? " }| %{$_ -replace "^\?\? ",""} | Add-Content .\.gitignore
However, .gitignore
file has to have a new empty line, otherwise it will append text to the last line no matter if it has content.
This might be a better alternative:
$gi=gc .\.gitignore;$res=git status --porcelain|?{ $_ -match "^\?\? " }|%{ $_ -replace "^\?\? ", "" }; $res=$gi+$res; $res | Out-File .\.gitignore
If you have a lot of untracked files, and don't want to "gitignore
" all of them, note that, since git 1.8.3 (April, 22d 2013), git status
will mention the --untracked-files=no
even if you didn't add that option in the first place!
"
git status
" suggests users to look into using--untracked=no
option when it takes too long.
Two ways:
use the argument -uno
to git-status
. Here's an example:
[jenny@jenny_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[jenny@jenny_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
Or you can add the files and directories to .gitignore
, in which case they will never show up.
Found it in the manual
The mode parameter is used to specify the handling of untracked files. It is optional: it defaults to all, and if specified, it must be stuck to the option (e.g. -uno, but not -u no).
git status -uno
-u no
doesn't show unstaged files either. -uno
works as desired and shows unstaged, but hides untracked.
I came here trying to solve a slightly different problem. Maybe this will be useful to someone else:
I create a new branch feature-a
. as part of this branch I create new directories and need to modify .gitignore to suppress some of them. This happens a lot when adding new tools to a project that create various cache folders. .serverless
, .terraform
, etc.
Before I'm ready to merge that back to master I have something else come up, so I checkout master
again, but now git status
picks up those suppressed folders again, since the .gitignore hasn't been merged yet.
The answer here is actually simple, though I had to find this blog to figure it out:
Just checkout the .gitignore file from feature-a
branch
git checkout feature-a -- feature-a/.gitignore
git add .
git commit -m "update .gitignore from feature-a branch"
IMHO better than the accepted answer is to use the following:
git config --local status.showUntrackedFiles no
The accepted answer does not work for when new files are added that are not in .gitignore
Source: Stackoverflow.com