Có thể yêu cầu Git bỏ qua các liên kết tượng trưng không? Tôi đang làm việc với môi trường Linux/Windows hỗn hợp và, như bạn đã biết, các liên kết tượng trưng được xử lý rất khác nhau giữa hai.Bỏ qua các liên kết tượng trưng trong .gitignore
Trả lời
Sử dụng git version> = 1.6
Git dùng để điều trị sym-liên kết giống như các file thông thường, nhưng các phiên bản git mới hơn (> = 1.6) kiểm tra xem một tập tin là vượt quá một liên kết tượng trưng và sẽ ném một lỗi nghiêm trọng.
ví dụ .:
# 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 bổ sung thêm các liên kết mềm, ngay cả khi chúng trỏ đến thứ gì đó bên ngoài kho lưu trữ ... – Izkata
Không, nó không thể làm được điều này trên toàn cầu. Tuy nhiên, nếu bạn có nhiều liên kết tượng trưng ở đây là tập lệnh bash mà bạn có thể sử dụng để dễ dàng thêm chúng vào tệp .gitignore của repo:
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
Giải pháp tuyệt vời! Hoạt động rất tốt :) Cảm ơn bạn rất nhiều! –
Chính xác thì ý của bạn là gì? Bạn chỉ có thể thêm các liên kết tượng trưng vào .gitignore của bạn nếu đó là những gì bạn muốn. –
Có nhưng nếu chỉ cần thêm tên tập tin, nó cũng sẽ bỏ qua các tập tin được symlinked ... mặc dù tôi đoán tôi có thể chỉ định đường dẫn đầy đủ. Tôi đã hy vọng cho một cái gì đó tôi có thể dính vào một tập tin cấu hình ... – Andrei
Đặt cược tốt nhất của bạn có thể là để tạo ra danh sách với một 'find * -type l', tôi đoán. – Cascabel