2009-08-27 3 views
5

Önceden bir kanca yazıyorum ve işlenecek olan her dosyanın tüm içeriği üzerinde bir kontrol yapmak istiyorum (özellikle bir Dosyalar). Dosyayı çalışma ağacında olduğu gibi değil, işlenecek şekilde kontrol etmeye çalışıyorum (farklı olabilir).Tüm dosyaları git dizininde bulunacakları gibi göster

Git ile birlikte gelen ön işlemeli kanca örneği, farkın nasıl alınacağını gösterir (böylece boşlukları ve benzerlerini inceleyebilirsiniz), ancak tüm dosyayı işlenecek şekilde almam gerekir.

cevap

9

bu deneyin:

git --work-tree=/path/to/checkout-area checkout-index path/to/file-to-checkout 

--work-tree seçenek gerçek iş ağaçta dosyanın üzerine kalmamak, çalışma ağaç olarak farklı bir alan kullanmak için git söyler. Gerekirse üzerine yazmak için -f seçeneğini eklemek isteyebilirsiniz, ancak komut dosyanız gerektiğinde düzgün bir şekilde temizlerse, gerekli olmamalıdır. Daha fazla bilgi için man page for checkout-index'a bakın.

+0

Evet, ödeme indeksi, bulmam gerekeni bulmak için ihtiyacım olan ipucu oldu. Teşekkürler! –

6

bir tek dosyası için bir başka çözelti (bu çakışan birleştirme sırasında olmayan veya rebase varsayarak) 'dir: (path/to/file depo üst dizinine göre olan)

$ git show :0:path/to/file 

. Veya (bence) herhangi bir filtreyi (anahtar kelime genişletme, satır sonu dönüşümü, vb.) Çağırmayacak olan "git cat-file blob :0:path/to/file" ya da "git cat-file blob :0:path/to/file" gibi "git cat-file blob :0:path/to/file" (git cat-file blob :0:path/to/file).

yaklaşık

bölümüne bakınız uzatılmış SHA-1 sözdizimi manpage git-rev-parse içinde


1.)Jefromi's answer avantajı git checkout-index kullanarak birden fazla dosya çıkış olmasıdır; Tüm dizini veya hatta tüm projeyi kontrol edebilirsiniz.

+0

Kullanmak için bir bahane bulabilirsem bu oldukça harika. – Cascabel