2011-01-30 12 views
7

Say I wykonaj następujące kroki w svn:Czy git ma (lub potrzebuje) odpowiednik rewizji pinu svn?

rev 1: create a file called 'foo' 
rev 2: delete 'foo' 
rev 3: create a new file called 'foo' 

Jeśli chcesz zobaczyć zawartość pierwszego „foo” przy użyciu SVN, musiałbym użyć składni rewizyjną peg „svn cat [email protected]” od tradycyjnej składni ' svn cat -r 1 foo "zawiedzie.
Czytałem, że git śledzi treść, a nie pliki, więc czy to oznacza, że ​​nie ma potrzeby, aby coś takiego jak wersja z peg?

Odpowiedz

8
git show HEAD~1:/path/tp/foo 

pokaże zawartość pliku, jak to było w „rev1” (uwaga: trzeba podać pełną ścieżkę dostępu do pliku z katalogu głównego repo Git)

As w "Restore a deleted file in a Git repo" można szybko przywrócić poprzednią wersję pliku za pomocą kasy.

git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file" 

(z $file jest pełna ścieżka pliku z katalogu bieżącego Git repo).

+6

Zasadniczo git zawsze robi równowartość 'svn cat foo @ 1 '. Linus prawdopodobnie uznałby zachowanie 'svn cat -r 1 foo' za kolejną porażkę svn. (Ja też) – Arrowmaster