2013-04-23 12 views
13

Git'deki değişiklikleri (aşamalı ve işlenmemiş) geri almanın en hızlı yolu nedir?Gitmeden aşamalı ve talihsiz değişiklikler nasıl geri alınır?

Her iki dosya da işlenmemiş.

$ git status -s 
M file1.txt # unstaged 
?? oops.txt # unstaged 

Bir dosya sahnelendi, bir dosya sınıflandırılmamış.

$ git status -s 
M file1.txt # staged 
?? oops.txt # unstaged 

elimden add hepsinin dizine ve sonra stashsave ve drop.

$ git add . 
$ git stash save 
$ git stash drop 
$ git status 
nothing to commit, working directory clean 

Daha hızlı bir yol var mı?

cevap

23

İki komut kullanmanız gerekir: git reset --hard ve git clean -fd. git reset --hard, tüm aşamalı değişiklikleri ve git reset -fd, kayıtlı olmayan değişiklikleri (dosyalar ve dizinler) geri alır. İki komutu yapacak bir takma ad oluşturabilirsiniz. Bunun için, sadece .gitconfig aşağıdaki satırları ekleyin:

[alias] 
    undo = '!git reset --hard && git clean -fd' 
+2

i bir takma ad ekledim = undo =! "Git reset --hard && git clean -f" ' – hIpPy

+2

güzel .. ve nereden geldiğini merak ediyorsanız: http://stackoverflow.com/questions/10641451/ what-is-the-bang-or-before-the-git-komutu – Calaf

+1

Bu yanıt yanlış bir terminoloji kullanır. Git sıfırlama - hard' ** dizinde sahnelenen ve çalışma ağacında gösterilmeyen tüm değişiklikleri atıyor **. 'git clean -fd', izlenmeyen tüm dosyaları ve dizinleri ** kaldırır **. Örneğin, yerel olarak ".o" dosyaları, "configure.make" gibi bir yapılandırma komut dosyasından, "etiketler" inizden vb. – Kaz

5

Sen git clean

 
$ git status -s 
?? oops.txt 

$ git clean -f 
Removing oops.txt 

$ git status -s 

Daha bilgi kullanabilirsiniz:

yinelemeli geçerli dizinden başlayarak sürüm kontrolü altında olmayan dosyaları kaldırarak çalışma ağacı temizler.

+2

Her ikisini de 'git reset - hard' ve 'git clean -f 'yapmam gerekiyor. – hIpPy

13
git reset HEAD 
git checkout . 

git reset HEAD tüm değişiklikleri ve `git checkout unstage olacaktır '. tüm değişiklikleri atıyor.

İlgili konular