Dosyaları geçici olarak git'ten kaldırma


450

Makinemde yerel bir git ayarladım. Git'i başlattığımda, önceden derlenmiş kütüphaneler ve ikili dosyalar ekledim. Ancak, şimdi geliştirme sırasında bu dosyaları aralıklı olarak kontrol etmek istemiyorum. Bu dosyaları depodan kaldırmak istemiyorum. Gelişimimi tamamlayana kadar bu dosyaları takip etmemenin bir yolu var mı? (Ben sadece git olmayan bu dosyalar için çalıştığı için .gitignore kullanamıyorum düşünüyorum. Ben geçici olarak dosya izleme devre dışı bırakmak istiyorum.)



Yanıtlar:


724

git update-index istediğini yapmalı

Bu git'e dosyadaki değişiklikleri görmezden gelmek istediğinizi söyleyecektir
git update-index --assume-unchanged path/to/file

Tekrar izlemeye başlamak istediğinizde
git update-index --no-assume-unchanged path/to/file

Github Belgeleri: güncelleme dizini


3
Sonunda, yanlışlıkla taahhüt edilen dev dosyam için gerçekten çalışan bir komut, teşekkürler :)
Richard de Wit

15
Neden git rm -r --cached <file>?
Ehsan

23
@Ehsan git rm --cached, aynı şubenin teslim alındığı diğer makinelerde yerel kopyaların silinmesine yol açacak gibi görünüyor . Bkz. Arlocarreon.com/blog/git/… ve özellikle altındaki tartışmaya.
mit

3
Benim için çalışmıyor, dosyada değişiklik yaptığımda dahil edilen değişikliklere hala ekleniyor. Hariç tutabilirim, ancak bir noktada muhtemelen yanlışlıkla eklenir.
MrFox

8
değişmeden varsayım bu amaç için tasarlanmamıştır. Bu konuyu
Appy

265

dosyalarınızı takip edilmeden tutabilirsiniz

git rm -r --cached <file>

ile dosyalarınızı ekleyin

git add -u

ne isterse itiyor ya da yapıyorlar.


19
Aslında bu doğru cevap: git-scm.com/book/en/v2/…
Ehsan

git rm --cached .DS_Store sonra yazdırır rm '../.DS_Store'Ve yerel dosya silinir ??! ( git version 2.6.4 (Apple Git-63))
Weishi Zeng

Cevabı burada
buldunuz

4
Bu doğru yanıt değil çünkü bu dosyayı kaynakta kaldıracaktır. OP bu dosyanın yerel değişikliklerini yok saymak istiyor, izlemeyi tamamen kaldırmak istemiyor
cjsimon

2
UYARI: İzini kaldırmak istediğiniz dosyaları da siler. Çözüm, tüm dosyaları bir yere kopyalamak ve taahhütten sonra geri kopyalamaktır.
psad

111
git rm --cached

Ancak, ilk etapta derlenmiş ikili dosyaları ve harici bağımlılıkları işlememelisiniz. Bunları içine çekmek için Bundler gibi bir araç kullanın.


2
Dizinler için -r seçeneğini (özyinelemeli) unutmayın: git rm -r --cached
Anatoliy

36

Dosyaları kaldırmak için aşağıdaki komutu kullanın

git rm --cached <file path>

7

Git-kitap bundan 2.4: "Şeyleri Geri Almak" bölümünde bahseder. Temel olarak, bazı dosyalar için dizinin durumunu HEAD durumuna, yani en son ödeme (veya kesinleştirme) durumuna sıfırlamaktır. Bu, dosyayı geçerli dizine yerleştirmeyi geri alır. Bu görevin komutu git reset. [1]

Yani, yürütmeniz gereken komut:

git reset HEAD /path/to/file

Git'in yeni sürümleri (1.6 ya da bu yana inanıyorum) yürütürken bu komutu (ve daha fazlasını) ipucu olarak veriyor git status. Bu sürümler çok kullanıcı dostudur. Kişisel bir ipucu: yalnızca birkaç dosyayı hazırlıyorsanız kullanın git add -i. Bu, etkileşimi kolaylaştırma aracını başlatacak ve bu da işi kolaylaştırıyor. Ayrıca, pratik durumlarda git kullanımı konusunda çok açık olduğu için kitabı okumanızı şiddetle tavsiye ederim.

[1] http://www.git-scm.com/book


Bu git reset [file], bozulmamış dosyalara ulaşmanın en kolay yolu olduğunu kabul ediyorum .
Spectral

18
geri alma ve izleme farklı şeylerdir
Jaime Sangcap

6

Orijinal sorunun cevabı değil. Ama bu birine yardımcı olabilir.

Yaptığınız değişiklikleri görmek için ( hangi dosyaların --görüntüleme-değiştirilmedi olarak işaretlendiğini bilin ))

git ls-files -v

Sonuçta elde edilen dosya listesinde bir karakter içeren bir önek bulunur (ör: H veya h) Küçük harfse (yani h), dosya işaretlendi --görüntü-değişmedi


5

Her bir dosyayı ayrı ayrı seçmek yerine, TÜM dosyaları yapı klasöründeki veya bin klasöründeki nasıl kaldırılacağını sorduğunuzu varsayıyorum .

Bu komutu kullanabilirsiniz:

git rm -r -f /build\*

Derleme dizininin üst dizininde olduğunuzdan emin olun.
Bu komut, bin / veya build / klasörlerindeki tüm dosyaları tekrar tekrar "siler". Delete kelimesiyle, git, bu dosyaların "silindiğini" ve bu dosyaların izlenmeyeceğini iddia edecekti. Git gerçekten bu dosyaları silme modunda olacak şekilde işaretler.

.Gitignore'nuzun yaklaşan taahhütler için hazır olduğundan emin olun.
Belgeler: git rm


1

git reset [dosya]

Dosyayı hazırlama alanından çalışma dizinine geri alma

Sık sık düğüm modüllerimi .gitignore dosyasına eklemeyi unuturum, bu sorunu çözer.


1

Bu benim için çalıştı

git reset HEAD 'dosyaadı'


1

Tüm Untrack dosyalarını kaldırmak için. Bu terminal komutunu deneyin

 git clean -fdx

Dosyaları git geçmişinden değil, diskten kaldıracaktır.
Leonardo

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.