2010-08-18 62 views
10

是否可以告訴Git忽略符號鏈接?我正在使用混合的Linux/Windows環境,正如您所知,符號鏈接在兩者之間的處理方式非常不同。忽略.gitignore中的符號鏈接

+3

究竟你忽略了是什麼意思?如果這是你想要的,你可以添加符號鏈接到你的.gitignore。 – 2010-08-18 10:58:45

+0

是的,但如果只是添加文件名,它也會忽略符號鏈接的文件...雖然我想我可以指定完整路徑。我希望有一些東西可以保存在一個配置文件中...... – Andrei 2010-08-18 11:05:21

+3

我想你最好的選擇可能是用'find * -type l'生成列表。 – Cascabel 2010-08-18 12:47:17

回答

1

使用Git版本> = 1.6

的Git用於治療符號鏈接一樣普通的文件,但新版本的Git(> = 1.6)檢查文件是否超出了一個符號鏈接,並會拋出一個致命的錯誤。

例如爲:

# 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增加了符號鏈接,甚至當它們指向倉庫之外的東西時...... – Izkata 2014-06-24 03:23:06

1

不,這是不可能在全球範圍內做到這一點。但是,如果你有很多符號鏈接的下面是一個bash腳本,您可以使用輕鬆地將它們添加到您的回購的.gitignore文件以:

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

真棒解決方案!工作非常好:)非常感謝你! – 2016-03-07 18:51:17