On 04/05/2011 03:41 PM, Jonathan Nieder wrote: > Eric Blake wrote: > >> Yeah, but then you have to 'git add -f path/to/file' them every time you >> change them > > No, I don't believe that's true. > > $ git add -f git.o > $ >git.o > $ git add git.o Aha - it's that pesky dir/ vs. dir/* biting me, yet again: $ mkdir -p /tmp/blah $ cd /tmp/blah $ git init Initialized empty Git repository in /tmp/blah/.git/ $ mkdir sub $ > sub/file $ git add sub/file $ git commit -a -m 'one' [master (root-commit) 645ee5a] one 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sub/file $ printf 'sub/*\n!sub/file\n' > .gitignore $ touch sub/file2 $ echo hi > sub/file $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: sub/file # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore no changes added to commit (use "git add" and/or "git commit -a") $ git add sub $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: sub/file # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore $ git reset Unstaged changes after reset: M sub/file $ printf 'sub/\n!sub/file\n' > .gitignore $ git add sub The following paths are ignored by one of your .gitignore files: sub Use -f if you really want to add them. fatal: no files added $ git add sub/file The following paths are ignored by one of your .gitignore files: sub Use -f if you really want to add them. fatal: no files added $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: sub/file # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore no changes added to commit (use "git add" and/or "git commit -a") $ git add . $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitignore # modified: sub/file # > > .gitignore only protects against starting to track a file that was > previously untracked. Not quite. When filtering a directory, it also protects against changes to tracked files in that directory. And that is what has been throwing me off, which is why we need a doc change (or possibly even a behavior change). -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature