2016-09-16 38 views
7

ben git den boşluk kırparak am dan Jest anlık dahil değildir. Anlık görüntüleri kullanarak Jest testleri eklemek istiyorum, ancak anlık görüntü dosyaları boşluk içeriyor ve bunları kaldırırsam testlerim her zaman başarısız olur. Bu yüzden, *.js.snap dosyalarını boşluk denetiminden hariç tutmak istiyorum. Git'e(veya alternatif olarak **/__snapshots/*) dosyalarını git diff-index'dan hariç tutmasını nasıl söylerim? OSX'de bash kullanıyorum. Bu arada <code>git diff-index --check --cached HEAD --</code> kullanarak taahhüt eder git boşluk çek

, ben interaktif olmak benim taahhüt kanca değiştirerek sorunu çalışıyorum: git diff-index yolu argümanı glob tarzı desen olan

# If there are whitespace errors, print the offending file names and fail. 
git diff-index --check --cached HEAD -- 
if [ $? -ne 0 ]; then 
    # Allows us to read user input below, assigns stdin to keyboard 
    exec < /dev/tty 

    while true; do 
     echo "Your commit introduces trailing whitespace. Are you sure you want to commit? y/n" 
     read yn 
     case $yn in 
      y) exit 0;; 
      n) exit 1;; 
     esac 
    done 
fi 

cevap

1

mentioned here gibi, kabuk tarafından yorumlanır .

Yani bu bir git komutu problemi olmaktan çıkıp kabuk konudur. Örneğin

Bkz: "How can I use inverse or negative wildcards when pattern matching in a unix/linux shell?"

Sen (git status ile) bakarak Betiğinize sonrası adımı yapmak, denemek ve shopt extglob, ya da (daha basit) etkinleştirebilirsiniz ya herhangi bir değiştirilmiş dosyalar için **/__snapshots/* ile tam olarak pathname ve değişikliklerini iptal etme (git checkout).

+0

Yanıtlamak için zaman ayırdığınız için teşekkür ederiz. Negatif joker karakterlerle ve GLOBIGNORE ile oldukça fazla zaman harcadım ama işe yaramadı. Her ikisi de sadece birden fazla joker karakteri içermeyen desenler ile çalışıyor gibiydi ('**/*'). – undefined

+0

Yine de kendime veremediğimden beri size ödül vereceğim, bu noktada itibara karşı endişe duymayacaksınız! – undefined

+0

@undefined Bu geri bildiriminiz için teşekkür ederiz ve cevabınıza +1. Daha önce http://stackoverflow.com/a/38931091/6309 ve http://stackoverflow.com/a/35622183/6309 adreslerinden yola çıkarak http://stackoverflow.com/a/33462321/6309 – VonC

3

Git o kötü belgelenmiş ve görünüşte çok iyi bilinen değil de, dışlamak için yolları belirterek bir yolunu var. Aşağıdaki gibi pathspec olarak bilinen ve bu durumda kullanılabilir: '!'

: pathspec sadece normal yol değildir ve belirtir özel karakter olan
git diff-index --check --cached HEAD -- ':!*.js.snap' . 

Yolun geri kalanıyla eşleşen dosyaların eşleşme listesinden çıkarılması gerektiğini belirtir.

Mercurial'ın -X veya --exclude kadar basit değil, ama orada.