Git'teki son işlemden sonra tüm değişiklikleri sıfırla


324

Eklenen dosyaları silme, değiştirilen dosyaları sıfırlama ve silinen dosyaları geri ekleme de dahil olmak üzere, son işlemden sonra dizinimde yaptığım her değişikliği nasıl geri alabilirim ?



8
@nawfal yinelenebilir, ancak 'son işlemden sonra tüm değişiklikleri sıfırla', 'git deposunu nasıl geri döndüreceğine' karşılık gelen arama kriterleriyle (google'da aranan kelimeler) daha fazla eşleşir. En azından benim gibi anadili İngilizce olmayan insanlar için: d
Shirish Herwade

Yanıtlar:


561

Önce değişiklikleri sıfırlayın

git reset HEAD --hard

sonra izlenmeyen her şeyi temizleyin. Nedeniyle takip edilmeyen dosyaları saklamak istiyorsanız .gitignore, bu komuta dikkat edin.

git clean -fd

7
@Adam: Bazen , yok sayılan dosyaları da kaldırmaya yönlendiren -xseçeneği de isteyebilirsiniz git clean.
Cascabel

31
.Gitignore nedeniyle izlenmeyen dosyaları saklamak istiyorsanız, git clean -fdkomuta dikkat edin .
bitsoflogic

3
@Levinaris: Diğer şekilde git clean -fdyok sayılan dosyaları silmeyeceksiniz. -xniyet.
Robert Siemer

5
@RobertSiemer Aslında yapabilir! Tamamen yok sayılan dosyalardan oluşan klasörleriniz varsa, bu klasörleri kaldırır ve böylece yok sayılan dosyaları siler. Aşağıdaki gibi bir .gitignore dosyasını düşünün: stackoverflow.com/q/25554504/456645 . Bu örnekte, bazı klasörlerin PHP dosyası olmadığını varsayalım. git clean -fdbu klasörleri ve izlenmemiş dosyaları silecektir. Git 1.9.1 sürümü ile test edildi
bitsoflogic

3
ama neden ikinci 'temizlik' gerekliydi?
Shirish Herwade

71

Eklenen dosyaları silme, değiştirilen dosyaları sıfırlama ve silinen dosyaları geri ekleme de dahil olmak üzere, son işlemden sonra dizinimde yaptığım her değişikliği nasıl geri alabilirim ?

  1. İzlenen dosyalarda yapılan değişiklikleri aşağıdakilerle geri alabilirsiniz :

    git reset HEAD --hard
    
  2. İzlenmeyen dosyaları şu yöntemlerle kaldırabilirsiniz :

    git clean -f
    
  3. İzlenmeyen dosyaları ve dizinleri aşağıdaki yollarla kaldırabilirsiniz :

    git clean -fd
    

    ancak izlenmeyen dosyalarda yapılan değişikliği geri alamazsınız .

  4. Yok sayılan ve izlenmeyen dosyaları ve dizinleri kaldırabilirsiniz

    git clean -fdx
    

    ancak yok sayılan dosyalarda yapılan değişikliği geri alamazsınız .

Ayrıca ayarlayabilirsiniz clean.requireForceiçin false:

git config --global --add clean.requireForce false

kullanırken -f( --force) kullanmaktan kaçınmak için git clean.


2
Harika, tam ihtiyacım olan şey. İlgili tüm komutları karşılaştırdığınız için teşekkürler!
Marquee

-1

Bu durumda çalışacak iki komut vardır,

root> git reset - sert KAFA ~ 1

root> git push -f

Daha git komutları için bu sayfaya bakın


1
git push -fsoru ile ilgili değildir ve bu senaryoda tehlikelidir
mustache1up
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.