Yerel dosya sisteminden silmeden dosyayı Git deposundan silin

İlk taahhüdüm günlük dosyalarını içeriyordu. .gitignore *log .gitignore ve şimdi log dosyalarını .gitignore çıkarmak istiyorum.

 git rm mylogfile.log 

dosyayı depodan kaldıracak, ancak yerel dosya sisteminden de kaldıracak.

Dosyanın yerel bir kopyasını silmeden bu dosyayı repodan nasıl silebilirim?

2517
17 июля '09 в 17:56 2009-07-17 17:56 mveerman tarafından 17 Temmuz 09 'da saat 17: 56'da belirlendi 2009-07-17 17:56
@ 9 cevap

Tek bir dosya için:

 git rm --cached mylogfile.log 

Bir katalog için:

 git rm --cached -r mydirectory 
3616
17 июля '09 в 17:57 2009-07-17 17:57 Cevap bdonlan 17 Temmuz 09: 17: 57'da verilmiştir. 2009-07-17 17:57

Tüm klasörü depodan kaldırmak için (örneğin, Dosyaları Yeniden Harmanla), aşağıdaki adımları izleyin:

 git rm -r --cached folderName 
border=0

Bazı yeniden uyumlayıcı dosyalar yaptım ve projenin diğer kullanıcıları için kaydedilmelerini istemedim.

253
04 апр. Cevap Sam Tyson tarafından verildi 04 nisan. 2012-04-04 21:14 '12 9:14, 2012-04-04 21:14

Dosyaları yerel dosya sisteminden silmeden, .gitignore tabanlı depodan da silebilirsiniz:

 git rm --cached `git ls-files -i -X .gitignore` 

Veya, alternatif olarak, Windows Powershell'de:

 git rm --cached $(git ls-files -i -X .gitignore) 
171
31 янв. Tarafından cevap Techbrunch 31 Ocak tarihinde verilen 2014-01-31 13:05 '14, 13:05 2014-01-31 13:05

Ayrıca, hassas veriler (örneğin, şifreleri içeren bir dosya) gönderdiyseniz, bunları depo geçmişinden tamamen kaldırmanız gerekir. İşte nasıl yapılacağı: http://help.github.com/remove-sensitive-data/

65
21 авг. Cevap BoD 21 Ağustos'ta verilir . 2011-08-21 15:16 '11 15:16 2011-08-21 15:16

Cevabım burada göre: medican.pw.site/questions/1963 / ...

Bir klasörü / dizini veya dosyayı yalnızca git havuzundan kaldırmak, yerel klasörden kaldırmak için 3 basit adımı deneyin.


Dizini kaldırma adımları

 git rm -r --cached File-or-FolderName git commit -m "Removed folder from repository" git push origin master 

Aşağıdaki komutlarda bu klasörü yoksayma adımları.

Bu klasörü aşağıdaki taahhütlerden yoksaymak için, .gitignore adlı kök dizinde tek bir dosya oluşturun ve bu klasör adını ona yapıştırın. İstediğiniz kadar barındırabilirsiniz.

.Gitignore dosyası şöyle görünecek.

 /FolderName 

2019

61
24 авг. Cevap eirenaios 24 ağustos tarafından verildi . 2015-08-24 15:16 '15 15:16, 2015-08-24 15:16

Daha genel bir çözüm:

  • .gitignore dosyasını düzenleyin.

    ECHO mylogfile.log >> .gitignore

  • Tüm öğeleri dizinden kaldır.

    git rm -r -f --cached .

  • Dizini geri yükle.

    git add .

  • Yeni bir fiks yap

    git commit -m "Removed mylogfile.log"

55
13 дек. Cevap mAsT3RpEE 13 Aralık'ta verilir. 2013-12-13 14:42 13, 02:42 de 2013-12-13 14:42

Git, değişmediklerini farz ederek bu dosyaları yoksaymanıza izin verir. Bu, git update-index --assume-unchanged path/to/file.txt . Dosyayı bu şekilde işaretledikten sonra, git bu dosyadaki değişiklikleri tamamen görmezden gelecektir; git durumunu veya git diff çalıştırırken görünmezler ve asla düzeltilmezler.

( Https://help.github.com/articles/ignoring-files adresinden )

Bu nedenle, onu silmeyi değil, sonsuza dek değişikliklerini görmezden gelmeyi. Bence sadece yerel seviyede çalışıyor, bu yüzden çalışanlar yukarıdaki gibi aynı işlemi yapmazlarsa hala değişiklik görebiliyorlar. (Hala bunu kontrol etmeniz gerekiyor.)

Not. Bu doğrudan soruyu cevaplamaz, ancak diğer cevaplara yapılan yorumlardaki sonraki sorulara dayanır.

18
28 янв. Cevap 28 Ocak Rystraum tarafından verildi. 2014-01-28 14:46 14, 14:46 2014-01-28 14:46

Yukarıdaki cevaplar bana yardımcı olmadı. Tüm sabit dosyaları kaldırmak için bir filtre dalı kullandım.

kullanarak dosyayı git deposundan kaldırın.

 git filter-branch --tree-filter 'rm file' 

klasörü kullanarak git deposundan kaldırın.

 git filter-branch --tree-filter 'rm -rf directory' 

Bu, dizini veya dosyayı tüm taahhütlerden kaldırır.

Aşağıdakileri kullanarak bir taahhüt belirtebilirsiniz:

 git filter-branch --tree-filter 'rm -rf directory' HEAD 

Veya aralık

 git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD 

Her şeyi uzaktan kumandaya yönlendirmek için şunları yapabilirsiniz:

 git push origin master --force 
5
12 янв. Cevap, 12 Ocak'ta Martijn Mellens'e verildi. 2016-01-12 16:59 '16, 16:59, 2016-01-12 16:59

Sadece dosyayı silmek ve yerel ve uzak repo'dan silmek istemiyorsanız, bu komutu kullanın:

 git update-index --assume-unchanged file_name_with_path 
4
15 авг. Cevap Afraz Ahmad 15 Ağustos tarafından verilmiştir . 2018-08-15 10:33 '18, 10:33, 2018-08-15 10:33

Etiketleri ile İlgili Diğer Sorular