2012-06-25 16 views
11

Jestem w trakcie przejścia z SVN do GIT i otrzymałem pytanie, na które nie mogę znaleźć odpowiedzi. Opiszę zwykły scenariusz, kiedy pracuję z niektórymi projektami open source za pośrednictwem SVN.Przywróć usunięty plik z repozytorium

  1. zrobić kasie
  2. rozpoczęcia aprowizacji z plikami, wprowadzić zmiany, aby przetestować, jak działa projekt.
  3. po s. 2 niektóre pliki są mocno zmodyfikowane i nie mam szansy na przywrócenie pierwotnego stanu.
  4. Usuwam zmodyfikowane pliki z dysku "rm filename.cpp", uruchamiam polecenie "svn update" i voila, wszystkie oryginalne pliki powracają.

Wszystko to działa dobrze również z GIT, z wyjątkiem strony 4. Próbuję zrobić "git pull", że projekt jest aktualny i nie otrzymuję oryginalnych plików, mimo że brakuje ich w lokalnym folderze.

Jakie jest prawidłowe polecenie dla str.4 podczas pracy z git. Thx

+1

możliwe duplikat [Jak przywrócić pliki do poprzedniego stanu w git?] (http://stackoverflow.com/questions/35284/how-do--restore-files-to-previous-states-in-git) –

Odpowiedz

10

Spróbuj kasy bieżące oddział (lub HEAD):

git checkout HEAD 

Lub jeśli chcesz przywrócić wszystko do ostatniego stanu popełnione (ostrzegawczy: będzie to trwałe usunięcie wszystkich uncommited zmian !), można również zresetować twardy:

git reset --hard 
+0

Żadne z tych nie działa.Usuwam niektóre pliki, po tym jak robię kasę, mówi, że niektóre pliki mają flagę D, nic więcej się nie dzieje. Jeśli zresetuję, będzie to oznaczało, że nie ma potrzeby, a ja znowu nic się nie dzieje. Jeśli wykonam polecenie pull, oznacza to, że pliki są aktualne, ale usuniętych plików nadal brakuje. – Eugen

+0

Przepraszamy, ale wygląda na to, że resetowałeś - funkcja "hard" działa poprawnie. Thx – Eugen

10

Najprostszym sposobem jest sygnalizowany na wyjściu git status:

git checkout -- file 

gdzie plik może być nazwą skasowanego pliku. Spowoduje to odzyskanie usuniętego pliku bez wpływu na inne pliki.

+0

cóż, ale co zrobić, jeśli istnieje 10 plików, które chcę przywrócić i nie pamiętam ich nazw? – Eugen

+0

'git status' powie Ci nazwy każdego zmienionego/usuniętego pliku – madth3

+1

Również jeśli usunąłeś folder, powiedz/src/test, i załóżmy, że ma on wiele plików pod nim, nawet wtedy możesz je przywrócić, uruchamiając następujące polecenie: git checkout - src/test – user204069

0

Git jest okropny w tym przypadku, a ja zmagałem się z nim tak bardzo, że jest niewiarygodne. Oto sposób to zrobić:

  1. sklonować zdalnego repo do jakiegoś miejsca na lokalnym HD różni się od gdzie masz istniejącego lokalnego repo
  2. skopiuj usuniętych plików/katalogów z nowo sklonowanego repo do istniejący lokalny repo
  3. zatwierdzić zmiany do istniejącego lokalnego repo, w razie potrzeby również impuls do zdalnego repo
  4. usunąć nowo sklonowanych lokalnego repo

Dlaczego shoul d być to skomplikowane i czasochłonne, aby uzyskać takie proste zadanie wykonywane ucieka mi ...

0

To jest to, co chciałbym zrobić:

git reset HEAD <file-path> git checkout -- <file-path>

Powiązane problemy