Dosyaları hariç tutmak için .gitignore yerine .git / info / exclude komutunu ne zaman kullanırsınız?


144

Dosyaları kullanmanın .git/info/excludeve .gitignorehariç tutmanın artıları ve eksileri hakkında biraz kafam karıştı .

Her ikisi de depo / proje seviyesindedir, bu yüzden nasıl farklıdırlar ve ne zaman kullanmalıyız .git/info/exclude?

Yanıtlar:


196

Bunun avantajı .gitignore, aksine havuzun kendisinde kontrol edilebilmesidir .git/info/exclude. Diğer bir avantaj, .gitignoredizine özgü yok sayma kuralları için her dizinde / alt dizinde bir tane olmak üzere birden çok dosyaya sahip olmanızdır .git/info/exclude.

Böylece, .gitignoredeponun tüm klonlarında kullanılabilir. Bu nedenle, büyük takımlar halinde tüm insanlar dosyalar Örnek aynı tür görmezden *.db, *.log. Ve birden fazla yüzünden daha belirgin yoksayma kurallarınız olabilir .gitignore.

.git/info/excludeyalnızca bireysel klonlar için geçerlidir, dolayısıyla bir kişinin klonunda yok saydığı şey başka bir kişinin klonunda mevcut değildir. Örneğin, birisi Eclipsegeliştirme için kullanıyorsa , bu geliştiricinin .buildklasör eklemesi mantıklı olabilir , .git/info/excludeçünkü diğer geliştiriciler Eclipse kullanmıyor olabilir.

Genel olarak, evrensel olarak yoksayılması gereken dosyalar / yoksayma kuralları girilmeli .gitignore, aksi takdirde yalnızca yerel klonunuzda yoksaymak istediğiniz dosyalar girilmelidir..git/info/exclude


ancak bu ideal olarak Git resmi belgelerine göre ~ / .gitignore'a gitmelidir, git-scm.com/docs/gitignore
Devendra Swami

@DevendraSwami ~/.gitignoreYukarıdaki yorumunuza hangi özel girişin girilmesi gerektiğini anlamadım . Anladığım kadarıyla, yok sayma kuralları 3 düzeyde olabilir - $PROJECT/.git/info/exclude(proje, kullanıcı) belirli yoksayma kuralları için, $PROJECT/<any number of directories>/.gitignoreherhangi bir yerde herhangi bir kullanıcı (projeye teslim edildiğinde) ~/.gitignore projeye özgü yoksayma kuralları için , kullanıcıya özgü herhangi bir proje için yoksayma kuralları için o makinede. Hedefe dayanarak, bir giriş koymak için yer seçersiniz.
mu 無

evet, kesinlikle haklısın. Benim yorumum bu soru ile ilgiliydi stackoverflow.com/questions/59673991/…
Devendra Swami

Orijinal eksik yorum için özür dilerim.
Devendra Swami

2
@ShimmyWeitzhandler, sln dosyası deponuzda zaten var mı? Daha sonra hariç tut veya .ignore, git'in değişikliklerini izlemesini engellemez. Aşağıdakilerden birini deneyin: git rm --cached <path-name>depodan siler, ancak yerel olarak saklar. git update-index --skip-worktree <path-name>dosyadaki değişiklikleri yoksayar, ancak depoda saklar. Merak etmiyor: Neden sln dosyasının hariç tutulmasını istiyorsunuz? Bu .Net çözümünün önemli bir parçası değil mi?
Koen

36

Google: Dosyaları hariç tutmanın 3 yolu

  1. .gitignore bu deponun her klonu için geçerlidir (sürümlü, herkes sahip olacak),
  2. .git/info/exclude yalnızca bu deponun yerel kopyasına uygulanır (yerel, başkalarıyla paylaşılmaz),
  3. ~/.gitignore bilgisayarınızdaki tüm depolar için geçerlidir (yerel, başkalarıyla paylaşılmaz).

3. aslında bilgisayarınızda bir yapılandırma ayarlamanız gerekir:

git config --global core.excludesfile '~/.gitignore'

2
Evet, ben de okudum, ama daha pratik (gerçek dünya) bir bakış açısı elde etmek istedim :-)
Parag

Bağlantılı blog .git/info/excludes, bağlandığı .git/info/excludebelgelerle onaylandığı şekilde dosyayı gerektiği zaman yanlışlıkla çağırır .
mwfearnley

13
(spoiler: üçüncü yol, ~ / .gitconfig içindeki bir ayar aracılığıyla bilgisayar-küresel yoksay)
hmijail resignees

@hmijail: teşekkürler, bu cevaba yorumunuzu
ekledim

12

Sadece (gerçek dünya) deneyimimizi sunmak için: her geliştirme ortamında bazı yapılandırma dosyalarını özelleştirmek zorunda kaldığımızda .git / info / exclude kullanmaya başladık, ancak yine de kaynağın depoda tutulmasını ve diğer geliştiricilerin kullanımına sunulmasını istedik.

Bu şekilde, klonlandıktan ve değiştirildikten sonra yerel dosyalar, repodaki orijinal dosyaları etkilemeden, ancak repoda mutlaka göz ardı edilmeden taahhütlerden çıkarılabilir.


4

Projeye.gitignore özgü kuralları yoksay için kullanın . Ortamınıza özgü kuralları yoksaymak için veya genel yoksay dosyasını kullanın .exclude

Örneğin, genel yoksay dosyalarım kullandığım herhangi bir düzenleyici tarafından oluşturulan geçici dosyaları yok sayar - bu kural ortamım için geçerlidir ve aynı projedeki diğer geliştiriciler için farklı olabilir (belki de farklı bir düzenleyici kullanırlar). OTOH, proje .gitignoredosyalarım API anahtarları gibi şeyleri yok sayar ve yapay yapılar oluşturur; bunlar proje içindir herkes için aynı olmalıdır.

Bu yardımcı olur mu?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.