Soru Git deposuna zaten bağlı olan dosyaları yoksay [duplicate]


Bu sorunun zaten bir cevabı var:

Eklediğim zaten bir Git havuzunu ekledim .gitignore dosyaya. Dosya dizinini nasıl yenileyebilirim ki göz ardı edilmek istediğim dosyalar göz ardı edilir mi?


2192
2017-07-16 19:26


Menşei




Cevaplar:


Bir parçayı kaldırmak için tek deponuza önceden eklenmiş / başlatılmış dosya, diğer bir deyişle, dosyayı izlemeyi durdurun, ancak sisteminizden silmeyin: git rm --cached filename

Untrack için her şimdi içinde olan dosya .gitignore:

İlk olarak herhangi bir kod değişikliği yapmayınve sonra şu komutu çalıştırın:

git rm -r --cached .

Bu, değiştirilen tüm dosyaları indeks(sahne alanı), sonra koş.

git add .

Tamamlayın:

git commit -m ".gitignore is now working"

Geri almak için git rm --cached filename, kullan git add filename.

Çalışmadan önce tüm önemli değişikliklerinizi yerine getirdiğinizden emin olun. git add .    Aksi takdirde, diğer dosyalarda yapılacak değişiklikleri kaybedersiniz.


3658
2017-07-06 17:09



Tüm değişikliklerinizi daha önce gerçekleştirdiğinizden emin olun, aksi takdirde değiştirilen tüm dosyalar üzerinde kontrolü kaybedersiniz - Hoang Pham
@TravisWebb Önce ayarladığınızdan emin olmalısınız. Ayrıca tüm dosyaları dizinden kaldırmamayı tercih ediyorum, sadece FileGlobs kullanarak * .o kullanarak ihtiyacım olanlar - Jason S
@trobrock cevabınızı en başında bir taahhüt içerecek şekilde düzenleyebilir misiniz? önceden peşinen. - MEM
Büyük cevap ama git rm --cached filename biraz daha az zorlu görünüyor .. - Jim Morrison
@JimMorrison noktayı özledin. Karmaşık bir .gitignore (Visual Studio'da C # projesi gibi) içeren büyük bir projeniz varsa, her bir dosyayı kaldırmak için yorucu olmak zahmetlidir. Bu üç basit komut, her şeyi acısız bir şekilde düzeltir. - longneck


Depoda halihazırda izlenen bir dosyada yapılan değişiklikleri (örneğin, yerel ortamınız için değiştirmeniz gereken bir dev.properties dosyası, ancak asla bu değişiklikleri kontrol etmek istemezsiniz) yapmak istediğinizi görmezden gelmeye çalışıyorsanız geçerli:

git update-index --assume-unchanged <file>

Değişiklikleri tekrar izlemeye başlamak isterseniz

git update-index --no-assume-unchanged <file>

Görmek git-update-index (1) Manuel Sayfa.

Ayrıca bir göz atın skip-worktree ve no-skip-worktree Git-sıfırlama geçmişini sürdürmek için buna ihtiyacınız varsa güncelleme endeksi için seçeneklerüzerinden)


Güncelleştirme: İnsanlar sorduğundan, yerel çalışma alanınızda hangi dosyaların şu anda "göz ardı edildiğini" (--assume-değişmemiş) görmek için uygun bir (ve aşağıdakine yorum yapıldı) takma addır.

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

518
2017-09-14 23:55



Bu dahidir! Zekice kullanışlı. 'Beklemede' dosyalarının bir listesini almak için bir yol olup olmadığını biliyor musunuz? - artfulrobot
Bu sizin için çalışacaktır: git ls-files -v Yazdırılan karakter küçükse, dosya değiştirilmeden değiştirilir. görmek: stackoverflow.com/a/2363495/677381 ve: git-scm.com/docs/git-ls-files - dyodji
@dyodji Bu sadece kendimi etkiler mi? Ya da tüm kullanıcılar? - wisbucky
İşte biraz daha ayrıntılı versiyonum ignored diğer adı, ~ / .gitconfig dosyasında göründüğü gibi: ignored = !git ls-files -v $(git rev-parse --show-toplevel) | (grep '^[[:lower:]]' || echo 'None ignored.') && echo '\nIgnore changes with: git update-index --assume-unchanged <file> \nor track again with: git update-index --no-assume-unchanged <file>' Üst seviye kısmı, tüm depoyu aradığından emin olur. - Chris
ne yazık ki --assume-unchanged ile çalışmıyor git stash: değişiklikler sırasında geri döndürülür git stash ve sırasında yeniden uygulanmadı git stash pop. Görmek bu soru. - Scott Weldon


Deponuza önceden eklenmiş / başlatılmış bir dosyayı devre dışı bırakmak için, yani dosyayı izlemeyi durdurun, ancak sisteminizden silmeyin. git rm --cached filename


351
2017-07-18 08:15



Bu eklediğim, işlediğim birkaç dosyayı kaldırmanın mükemmel bir yoluydu, ancak sonradan fark edilmenin takip edilmesine gerek yoktu. Bu dosyaları .gitignore'a ekledikten sonra, bunu yapabildim ve mükemmel bir şekilde izlemeyi başardım. - Andrew Larned
İpucu: örneğin eklerseniz *.config senin için .gitignore, yapabilirsin git rm --cached *.config hepsini izlemeyi durdurmak *.config Dosyalar. - dav_i
Ayrıca, bunu yaptığınızda, sisteminizde kalsa bile, ittiğin diğer reposlardaki dosyaları siler. Yalnızca dosyalarda yapılan değişiklikleri görmezden geliyorsanız ve bunları diğer kullanıcıların dosyalarından silmek istemiyorsanız kullanmayı deneyin. git update-index --assume-unchanged file.name - dav_i
IMO, bu doğru cevap. Wiki'nin cevabı işe yarıyor, ama özellikle de bu soruya verilen cevaplar oldukça ağır. (Vikiyi tamir ederim, ama emin değilim. "Yakında!";) - Olie
@Olie ol son derece Bu "çözüm" ile dikkatli olun. Bu irade dosyayı repoda kaldırın ve bu değişikliği yapan herkes de dosyayı kaldırır. En iyi çözüm, assume-unchanged, @dav_i'nin dediği gibi, ya da --skip-worktree alternatif olarak. - Sebastianb


Evet - .gitignore Sistem, yalnızca şu anda sürüm kontrolü altında olmayan dosyaları yok sayar.

Yani zaten bir dosya eklediyseniz test.txt kullanma git-addsonra ekleyerek test.txt için .gitignore hala değişikliklere neden olacak test.txt İzlenecek

Yapmaya mecbur kalacaksın git rm test.txt İlk önce bu değişikliği yapın. Sadece o zaman değişecek test.txt yok sayılmak.


78
2018-02-02 15:59



Bu tamamen doğru değil, izlenen bir dosyadaki değişiklikleri görmezden gelmek mümkün ... cevabımı gör: stackoverflow.com/a/11366713/677381 - dyodji
git update-index --assume-değiştirilmemiş <file> ve git rm --caheced <file> aslında benim için çalışmıyordu. Git rm <dosya> yaptım ve daha sonra yeni dosya oluşturdum <file>başarıyla yok sayıldı. Git sürüm 1.8.1 kullanıyorum - Sorun buysa. - mujaffars
Sözdizimin burada yanlış. onun git rm test.txt ve burada daha kapsamlı bir cevabın bağlantısı stackoverflow.com/questions/12661306/... - Linnea Huxford


.Gitignore içindeki boşluk boşluğunu kaldır

Ayrıca, .gitignore öğenizde boşluk bırakmadığınızdan emin olun. Bu soruya cevap buldum çünkü bir cevabın peşindeydim, o zaman komik bir his vardı, sadece editörlük yerine editör açmalıyım. Sonundan tek bir fazla boşluk kaldı ve nonoş Şuan çalışıyor :)


50
2017-07-15 07:22



Tam olarak aynı problemi yaşadım: P. Bunun için de bu soruya cevap verdim. İyi ki burada belgelenmişsin. +1 - Hindol
Eğer benden hoşlanıyorsanız vi'yi hızlıca düzenlemek için kullanın. Hizli bir boşluk göstermek için ': set list' komutunu kullanın. - Sam Giles
Yaptığımda bu bana oldu echo node_modules >> .gitignore (en azından pencereler) - Khôi
Haftalar boyunca ben senin beyaz boşluğunu görene kadar bununla uğraştım. Teşekkürler, sorunumu çözdüm. - Blazes


bu adımları takip ettim

git rm -r --cached .
git add .
git reset HEAD

Bundan sonra, yok sayılması gereken tüm dosyaları (benim durumumda * .swp) sil.


40
2018-03-02 09:00



Bu dosyaya dikkat edin, göz ardı edilenler hariç tüm dosyaları eklemek istediğiniz varsayılır ve genellikle durum böyle değildir. - RoeeK


Dosyayı yerel sisteminizden silmeden izlemeyi durdurmak istiyorsanız, göz ardı etmeyi tercih ederim. config/database.yml dosya. Basitçe deneyin:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

şimdi, bu dosyayı .gitignoredeğişiklikleri yapın ve değişiklikleri yapın. Ve bundan sonra, config / database.yml dosyasına yapılan herhangi bir değişiklik git tarafından izlenemeyecektir.

$ echo config/database.yml >> .gitignore

Teşekkürler


37
2017-08-21 14:20





Yalnızca belirli birkaç dosyanın izlenmesini kaldırmak için:

git update-index --assume-unchanged path/to/file

Eğer bir daha izlemeye başlamak istersen:

git update-index --no-assume-unchanged path/to/file                      

28
2018-04-17 07:21