Git: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m =
m podstrona gałęzie
Linia 12:
 
= [[Git/Przypadki|Przypadki użycia]] =
=[[Git/Branch|Gałęzie]]=
 
= [[Git/Konfiguracja|Konfiguracja]] =
Linia 71 ⟶ 72:
Kiedy wykonujesz "git commit", nowy obiekt zatwierdzenia jest tworzony ze starym HEAD jako przodkiem, a nowe zatwierdzenie jest zapisywane do aktualnej głowicy (wskazywanej przez HEAD).
 
= Trzy użycia "git checkout" =
 
Git checkout może zrobić trzy oddzielne rzeczy:
== Przełączenie na inną głowicę ==
git checkout [-f|-m] <galąź>
 
To czyni <gałąź> nową GŁOWICĄ, i kopiuje jej stan do indeksu i katalogu roboczego.
 
Jeśli plik ma nie zapisane zmiany w katalogu roboczym, to stara się zachować je. To jest pojedyncza próba i wymaga aby zmienione pliki nie zostały zmienione pomiędzy starymi i nowymi GŁOWICAMI. W takim wypadku, wersja katalogu roboczego pozostaje nie tknięta.
 
Bardziej agresywną opcją jest -m, która będzie próbowała zrobić 3-kierunkowe (międzyplikowe) scalenie. To może się nie udać, zostawiając niescalone pliki w indeksie.
 
Alternatywą jest użycie -f, co nadpisze niezapisane zmiany w katalogu roboczym. Ta opcja może być użyta bez określenia opcji <gałąź> (domyślnie GŁOWICA) aby cofnąć lokalne zmiany.
 
== Cofnięcie zmiany dla małej liczby plików ==
git checkout [<wersja>] [--] <ścieżki>
 
skopiuje wersję <ścieżki> z indeksu do katalogu roboczego. Jeśli jest podana <wersja>, index dla tych ścieżek będzie uaktualniony z danej wersji przed kopiowaniem z indeksu do drzewa roboczego.
 
Inaczej niż z wersją bez określenia <ścieżki>, to NIE uaktualni GŁOWICY, nawet gdy <ścieżki> to ".".
 
== Stworzenie gałęzi ==
 
git checkout [-f|-m] -b <gałąź> [wersja]
 
stworzy i przełączy do nowej gałęzi o podanej nazwie. To jest odpowiednik do
 
git branch <gałąź> [<wersja>]
git checkout [-f|-m] <gałąź>
 
Jeśli <wersja> jest pominięta, domyślnie jest GŁOWICA, a w takim wypadku żadne pliki katalogu roboczego nie będą zmienione.
 
To jest typowy sposób wypuszczenia wersji, która nie posiada istniejącej głowicy wskazującej na nią.
 
= Kasowanie gałęzi =
 
"git branch -d <głowica>" jest bezpieczne. Kasuje podaną <głowicę>, ale najpierw sprawdza, czy zatwierdzenie jest osiągalne w inny sposób. To znaczy scaliłeś gdzieś gałąź lub nigdy nie robiłeś edycji na tej gałęzi.
 
To dobry sposób na stworzenie "tematycznej gałęzi" kiedy pracujesz nad czymś większym niż jednolinijkowiec, ale powinno się usuwać je gdy skończysz. Nadal pozostaje w historii.
 
= Brudna robota z głowicami: git reset =
 
Jeśli potrzebujesz nadpisać aktualną GŁOWICĘ z pewnego powodu, narzędzie aby to zrobić to "git reset". Istnieją trzy poziomy resetu:
 
git reset --soft <głowica>
To nadpisuje aktualną GŁOWICĘ zawartością <głowica>.
 
Jeśli pominiesz <głowica>, domyślnie jest GŁOWICA, więc niczego nie zrobi.
 
git reset [<głowica>]
git reset --mixed [<głowica>]
 
To nadpisuje aktualną GŁOWICĘ i kopiuje ją do indeksu, cofając jakiekolwiek polecenia git-update-index, które mogłeś wykonać.
 
Jeśli pominiesz <głowica>, domyślnie jest GŁOWICA, więc nie będzie zmiany w aktualnej gałęzi, ale wszystkie indeksy zostaną cofnięte.
 
git reset --hard [<głowica>]
 
To robi wszystko wspomniane wyżej oraz uaktualnia katalog roboczy. Wyrzuca wszystkie twoje edycje w-toku i daje ci czystą kopię. To jest zwykle używane bez określenia <głowica>, a w takim wypadku aktualna GŁOWICA jest użyta.
= [[Git/SCM|Porównanie gita i SVN-a według komend]] =
= Systemy śledzenia błędów =