Is it possible to tell Git to ignore symlinks ? I'm working with a mixed Linux / Windows environment and, as you know, symlinks are handled very differently between the two.
Ignore symbolic links in .gitignore
Use git version >= 1.6
Git used to treat sym-links the same as regular files, but newer git versions (>= 1.6) check if a file is beyond a symbolic link and will throw a fatal error.
e.g.:
# git init
# mkdir newdir
# touch newdir/foo
# git add newdir/foo
# git commit -m 'add foo'
# mv newdir /tmp/
# ln -s /tmp/newdir
# touch newdir/bar
# git add newdir/bar
fatal: 'newdir/bar' is beyond a symbolic link
# git add/tmp/newdir
fatal: '/tmp/newdir' is outside repository
# git --version
git version 1.7.3.4
git 1.7.9.5 adds symlinks just fine, even when they point to something outside the repository... –
Annorah
No, it is not possible to do this globally. However, if you have lots of symlinks here is a bash script that you can use to easily add them to your repo's .gitignore file:
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore; # add symlinks
test -d "$f" && echo $f\* >> .gitignore; # add new directories as well
done
Awesome solution! Works very fine :) Thank you very much! –
Diverticulum
© 2022 - 2024 — McMap. All rights reserved.
find * -type l
, I guess. – Hareldagit add .
in order to track new files, counting on my.gitignore
to exclude files I don't want to be tracked. Of course I can just add each symlink manually to the.gitignore
, which is what I'm doing right now, just thought there might be some built-in way to prevent symlinks from being tracked. – Askja