You can use the git clean command to remove untracked files. The -fd command removes untracked directories and the git clean -fx command removes ignored and non-ignored files. You can remove untracked files using a . gitignore file.
“how to ignore untracked files in git” Code Answer's To remove directories, run git clean -f -d or git clean -fd. To remove ignored files, run git clean -f -X or git clean -fX. To remove ignored and non-ignored files, run git clean -f -x or git clean -fx.
Add All Files using Git Add The easiest way to add all files to your Git repository is to use the “git add” command followed by the “-A” option for “all”. In this case, the new (or untracked), deleted and modified files will be added to your Git staging area.
If you want to ignore a file that you've committed in the past, you'll need to delete the file from your repository and then add a . gitignore rule for it. Using the --cached option with git rm means that the file will be deleted from your repository, but will remain in your working directory as an ignored file.
As already been said, to exclude from status just use:
git status -uno # must be "-uno" , not "-u no"
If you instead want to permanently ignore currently untracked files you can, from the root of your project, launch:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Every subsequent call to git status
will explicitly ignore those files.
UPDATE: the above command has a minor drawback: if you don't have a .gitignore
file yet your gitignore will ignore itself! This happens because the file .gitignore
gets created before the git status --porcelain
is executed. So if you don't have a .gitignore
file yet I recommend using:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
This creates a subshell which completes before the .gitignore
file is created.
COMMAND EXPLANATION as I'm getting a lot of votes (thank you!) I think I'd better explain the command a bit:
git status --porcelain
is used instead of git status --short
because manual states "Give the output in an easy-to-parse format for scripts. This is similar to the short output, but will remain stable across git versions and regardless of user configuration." So we have both the parseability and stability;grep '^??'
filters only the lines starting with ??
, which, according to the git status manual, correspond to the untracked files;cut -c4-
removes the first 3 characters of every line, which gives us just the relative path to the untracked file;|
symbols are pipes, which pass the output of the previous command to the input of the following command;>>
and >
symbols are redirect operators, which append the output of the previous command to a file or overwrites/creates a new file, respectively.ANOTHER VARIANT for those who prefer using sed
instead of grep
and cut
, here's another way:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
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.
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With