2011-03-29 13 views
7

Tüm git depolarım boş bir .gitignore dosyasına dokunarak ve taahhüt ederek "boş" bir ilk işlemle başlamak istiyorum. Benim nedenlerim kabaca this question ile aynıdır. Baiscally, ilk taahhüt ("kuyruk") hiçbir ebeveyn taahhüdü yoktur, bu nedenle diğer taahhütler ile olmazdı çeşitli garip ve beklenmedik şeyler olur.Git init'ten sonra boş bir .gitignore dosyası otomatik olarak işlensin mi?

yüzden touch .gitignore && git commit .gitignore -m "Initial commit" her git init takip etmek için kullanabileceğiniz bir post-init kanca gibi bir şey var mı? Yoksa bunu yapan kendi özel init komutumu yazmalı mıyım?

cevap

13

, git init kullanmayın - boş repolar yapar! Bunun yerine git clone kullanın. Sadece boş gitignore'unuzun bir taahhüdüyle bir depo yapın ve bu sahte-boş deposu istediğinizde klonlayın. (Her yöne müsait eğer istersen github üzerinde herkese açık olarak barındırabilir.)

Alternatif olarak, yerel makinenizde ne istediğinizi için bir git takma olun:

[alias] 
    myinit = !git init && touch .gitignore && git add .gitignore && git commit -m "empty gitignore" 

Not yapamazsınız o yerleşik komutlarla aynı ada sahip diğer adlar.

+0

Bunu 'git status &>/dev/null ||' ya da bir şey ile önek yapmalıyım, böylece 'myinit' komutu geçerli dizinde zaten bir git repo varsa bir op-op olacaktır? –

+0

@Ryan: İsterseniz bunun gibi bir şey yapabilirsiniz, ama önemli değil - var olan bir repoda 'init' şablonu (özellikle, * .sample 'kancaları) yeniden düzenler ve dizin yapısını oluşturur etkin olarak hayır olacak). Eğer önek yaparsanız, 'git status' istediğiniz gibi değildir - diğer şeylerin arasında yavaştır. Git rev-parse HEAD &>/dev/null' seçeneğini öneririm. Bu sadece “HEAD” ın bir taahhüdünü işaret ettiği bir repo dahilinde başarılı olacaktır - yani zaten 'git init' komutunu çalıştırırsanız başarısız olur ve adımlarınızın geri kalanına neden olur. – Cascabel

+0

Ooh, o [buradan] (http://stackoverflow.com/questions/5491832/how-can-i-check-whether-a-git-repository-has-any-commits-in-it) böylece gönderebilir Cevap olarak kabul edebilir miyim? –

3

git init'u yaptığınızda, .git dizini (kancaları içerir) varsayılan değerlere başlatılır. Bu nedenle, git init'dan sonra mevcut kanca yoktur. Bir hipotetik "post-init" kancası işe yaramamaktadır çünkü çalışabileceği tek zaman, kanca dizininin başlatıldığı noktada (ve aktif bir kanca içermeyen) olacaktır. Bir kanca uygun bir çözüm değildir çünkü bunu yapar Özel komut yazma daha iyi olabilir gibi

geliyor. Bir repo taahhüt istiyorsanız

+0

Evet, ne git kancaları bu yaklaşım doğru yolu değildi olarak atıfta düşündüm. Bu yüzden * bir kanca * gibi bir şey söyledim - 'git init 'çalıştırdıktan sonra özel davranışı tetiklemek için herhangi bir şekilde kastettim. –

3

Pek güzel değil ama çalışacağız. Bir repoyu ne zaman başlatmak isterseniz, aşağıdaki iki komutu çalıştırın.

git init 
touch .gitignore 

Sonra emin git senin gitignore dosya çalıştırmak izlediği yapmak: Eğer repo kurmak şekline bağlı

git add .gitignore 
git commit .gitignore -m "Adding .gitignore" 

, yine ikinci iki komutu yapıyor olabilir.

İlgili konular