2012-03-24 11 views
14

Mój projekt ma plik foo, którego używam i sprawdzam z git. Właśnie dokonałem refaktoryzacji, więc już nie potrzebuję pliku. Jeśli wykonam git rm foo, czy plik będzie nadal istnieć w starszych zatwierdzeniach? Czy będę mógł sprawdzić starszy commit i pracować z plikiem?Czy git rm usuwa całą historię pliku?

Odpowiedz

19

Nie, git rm (plus zatwierdzenie) zapisuje nowe drzewo, które odzwierciedla, że ​​plik już nie istnieje. Cała historia pliku, w tym tworzenie, modyfikacje i ewentualne usunięcie, jest obecna w historii.

+0

Czy pierwsze słowo nie powinno brzmieć tak? Jak poprosił, może uzyskać pliki z poprzednich zatwierdzeń? I chcesz powiedzieć tak! Dobrze? – PHcoDer

6

Nie, git rm usunie tylko plik z katalogu roboczego i doda to usunięcie do indeksu. Tak więc dotyczy to tylko przyszłych zatwierdzeń. Wszystkie poprzednie zatwierdzenia pozostają takie same, a historia będzie się wyświetlać po usunięciu pliku z repozytorium.

Ogólnie wszystkie zatwierdzenia, które wcześniej wykonałeś, są trwałe, więc nigdy nie powinieneś się martwić o utratę zatwierdzeń, gdy znajdą się gdzieś w historii. Oczywiście, są pewne rzeczy, które mogą usunąć lub zmienić wcześniejsze zatwierdzenia (takie jak ponowne przesyłanie), ale w przypadku większości rzeczy, które robisz, jesteś całkiem bezpieczny.

+0

Czy pierwsze słowo nie powinno brzmieć tak? Jak poprosił, może uzyskać pliki z poprzednich zatwierdzeń? I chcesz powiedzieć tak! Dobrze? – PHcoDer

+0

@PHcoDer I (i zakładam, że Daniel też) odpowiedział na pytanie w tytule pytania. Tak więc, nie, git rm nie usuwa całej historii. – poke

5
  1. Będziesz zdolny do kasy każdą starą wersję przy użyciu znanych popełnić identyfikator ze wszystkimi stanu należą do niego, w tym pliki, które zostały usunięte teraz. Zobacz np. git branch < nazwa oddziału > < Punkt początkowy > gdzie punktem początkowym jest identyfikator zatwierdzenia. Nie powinieneś nawet śledzić, że punkt startowy należy do bieżącego oddziału; Identyfikatory commit są niepowtarzalne, więc mogą znajdować się w dowolnej gałęzi znanej w bieżącym repozytorium.

  2. Możesz sprawdzić poprzednią historię pliku, używając polecenia log; ale nie działa w żadnej składni - dla 1.7.7 wydam "git log - oldpath" zamiast prostej "git log oldpath", ponieważ w przeciwnym razie nie będzie można odróżnić ścieżki od wersji. W przypadku niektórych innych poleceń jako "winę" nawet to nie wystarczy - należy wypróbować starą wersję, aby ją uruchomić.

Powiązane problemy