2010-08-18 62 views
10

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

+3

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. –

+0

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

+3

Đặ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

Trả lời

1

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 
+2

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

1

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 
+0

Giải pháp tuyệt vời! Hoạt động rất tốt :) Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan