Aşağıdaki satırı ekledim .gitignore
:
sites/default/settings.php
ancak git status
yazdığımda dosyayı eksiz dosya olarak gösteriyor.
Sorun ne? Diğer tüm modeller iyi çalışır.
Aşağıdaki satırı ekledim .gitignore
:
sites/default/settings.php
ancak git status
yazdığımda dosyayı eksiz dosya olarak gösteriyor.
Sorun ne? Diğer tüm modeller iyi çalışır.
Yanıtlar:
Emin senin emin olun .gitignore
çalışma dizininin kökü olduğunu ve bu dizin vadede git status
ve kopya durum çıkışından dosyanın yolunu ve yapıştırın .gitignore
.
Bu işe yaramazsa, dosyanızın Git tarafından zaten izlenmiş olması muhtemeldir. Bunu çıktısıyla onaylayabilirsiniz git status
. Dosya “İzlenmeyen dosyalar” bölümünde listelenmemişse, Git tarafından zaten izlenir ve kuralı .gitignore
dosyadan yok sayar .
Git'teki dosyaları yok saymanın nedeni, depoya eklenmeyecek olmasıdır. Daha önce yoksayılmasını istediğiniz bir dosya eklediyseniz, Git tarafından izlenir ve onunla eşleşen yoksayma kuralları atlanır. Git bunu zaten deponun bir parçası olduğu için yapar.
Dosyayı gerçekten görmezden gelmek için dosyayı kaldırmanız ve depodan kaldırmanız gerekir. Bunu kullanarak yapabilirsiniz git rm --cached sites/default/settings.php
. Bu, dosyayı fiziksel olarak silmeden dosyayı depodan kaldırır (ne --cached
yaparsa yapın). Bu değişikliği yaptıktan sonra dosya depodan kaldırılır ve yoksayılması düzgün çalışmalıdır.
.git
bulunduğu ve kendisinin deponun kökü olduğu dizindir. Bir depoyu klonladığınızda, /xy/
o zaman /xy/
çalışma dizininiz /xy/.git/
içeride.
git add .
sonra da yapmanız gerekir git rm --cached
.
Bu sorunla karşılaşıyorum, bu eski bir soru, ama bu dosyanın izlenmesini istiyorum ancak belirli çalışma kopyalarında izlemek istemiyorum, bunu yapmak için
git update-index --assume-unchanged sites/default/settings.php
.gitignore yalnızca deponuza henüz eklemediğiniz dosyaları yoksayar.
Bir yaptıysanız git add .
ve dosya dizine eklendiyse, .gitignore size yardımcı olmaz. git rm sites/default/settings.php
Kaldırmak için yapmanız gerekecek ve daha sonra yok sayılacaktır.
git rm
bunu yapmanız gerekir, ancak siz onu çalışma dizininden kaldıracak -f seçeneğini kullanmanızı isteyebilir. Dosyanın bir kopyasını oluşturmak, kopyasını yapmak git rm -f
ve geri yüklemek dışında bunu anlayamadım .
Lütfen bu komutu kullanın
git rm -rf --cached .
git add .
Bazen .gitignore dosyaları doğru olsalar bile çalışmaz. Git'in dosyaları yok saymasının nedeni, dosyaların depoya eklenmemesidir. Daha önce yoksaymak istediğiniz bir dosya eklediyseniz, Git tarafından izlenir ve atlama eşleme kuralları atlanır. Git bunu zaten yapıyor çünkü dosya zaten deponun bir parçası.
Ben de aynı problemi yaşadım. .gitingore
Çalışırken izlenmeyen dosyalar olarak listelenen yerlerde tanımlanan dosyalar git status
.
Bunun nedeni, .gitignore
dosyanın UTF-16LE
kodlamaya değil, UTF8
kodlamaya kaydedilmesiydi.
.gitignore
Dosyanın kodlamasını değiştirdikten sonra UTF8
benim için çalıştı.
Settings.php dosyasını başarıyla yoksaymak için ne yaptım :
Git'te kaydedilen dosya varsa, yoksayma beklendiği gibi çalışmaz. Sadece dosyayı silin ve onaylayın. Daha sonra görmezden gelecektir.
Git'te izlenmesini istediğim uygulama Yapılandırma dosyaları gibi örnekler vardır (yani .gitignore çalışmaz), ancak yerel ayarlar için değiştirmem gerekiyor. Git'in bu dosyaları yönetmesini veya değiştirilmiş olarak gösterilmesini istemiyorum. Bunu yapmak için skip-worktree kullanıyorum:
git update-index --skip-worktree path/to/file
Dosyaları listeleyerek ve atlanmış için S ile başlayan satırları kontrol ederek dosyaların atlandığını onaylayabilirsiniz
git ls-files -v | grep ^S
Gelecekte git'in dosyayı yerel olarak yönetmesini istiyorsanız, şunu çalıştırın:
git update-index --no-skip-worktree path/to/file
Yukarıdaki Mescalito'nun harika bir cevabı vardı, bu da beni doğru yola soktu ama
git update-index --zum-değişmemiş dosya / to / ignore.php
Git ile yapılan bir sözleşmesi vardır: kullanıcı dosyayı değiştirmemeye söz verir ve Git'in çalışma ağacı dosyasının dizine kaydedilenle eşleştiğini varsaymasına izin verir.
Ancak, dosyaların içeriğini değiştiriyorum, bu yüzden benim durumumda --skip-worktree daha iyi bir seçenektir.
Toshiharu Nishina'nın web sitesi, skip-worktree ile varsayım değişmeden arasında mükemmel bir açıklama yaptı: Git ile yerel olarak yönetilen dosyaları yoksay
Başka bir olası neden - aynı anda çalışan birkaç git istemcisi örneği . Örneğin "git shell" + "GitHub Desktop" vb.
Bu benim başıma geldi, ana istemci olarak "GitHub Desktop" kullanıyordum ve bazı yeni .gitignore ayarlarını görmezden geliyordu: taahhütten sonra:
Sebep : Visual Studio Code düzenleyicisi, aynı açık havuzla arka planda çalışıyordu. VS Code yerleşik git kontrolü vardır ve bu bazı çakışmalar yapar.
Çözüm : Birden çok, gizli git istemcisini iki kez kontrol edin ve özellikle git önbelleğini temizlerken aynı anda yalnızca bir git istemcisi kullanın.
.Gitignore bir uzantı olmadığından emin olun !! .Gitignore.txt olamaz, pencerelerde sadece .gitignore dosyasını adlandırın. ve işe yarayacak.
Sadece git 1.7.3.1 ile denedim ve şöyle bir yapı verdim:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
nerede repo
böylece yukarıda belirtilen "kök" (Ben çalışma ağacının kökü çağırır) ve .gitignore
sadece içerir sites/default/settings.php
benim için çalışmalarını görmezden (ve ister önemli değil, .gitignore
repo veya değil eklenir). Bu, repo düzeninize uyuyor mu? Değilse, ne farklılık gösterir?
Gelecekte herhangi birinin benim yaptığım problemle aynı olması durumunda:
Kullanırsanız
*
!/**/
!*.*
uzantısı olmayan ikili dosyaları kaldırmak için hile, diğer TÜM gitignore satırlarının aşağıda olduğundan emin olun. Git üstten .gitignore'dan okuyacak, bu yüzden gitignore'umda 'test.go' olmasına rağmen, dosyada bir ilkti ve sonra 'imzasız' oldu
!*.*
Yukarıda VS Kod terminali en komutları denedim ve ben gibi hataları var:
fatal: pathspec '[dir]/[file]' did not match any files
Projeyi GitHub Desktop'ta açtım ve oradan yoksaydım ve işe yaradı.