Pozwólcie, że wyjaśnię niektóre przypadki użycia wyewidencjonowania z plikiem, folderem i gałęziami, aby pomóc w zrozumieniu.
Powiedzmy, że mamy folder o nazwie, dev
a index.html
także wszystko jest śledzone, a katalog roboczy jest czysty.
Jeśli przypadkowo zmienię nazwę pliku index.html
i chcę cofnąć, że po prostu git checkout index.html
go użyję, odzyska stan pliku z aktualnie wybranej gałęzi repozytorium.
Teraz, jeśli zrobiłem jakąś zmianę w dev
folderze i chcę to odzyskać. Mogę użyć, git checkout dev
ale co, jeśli istnieje już gałąź o nazwie dev
zamiast sprawdzania tego folderu, ściągnie tę gałąź. Aby tego uniknąć, wolałbym zrobić git checkout -- dev
.
Teraz pusty podwójny myślnik oznacza bieżącą gałąź i pyta gita o folder dev
z aktualnie wybranej gałęzi.
Podobnie jeśli git checkout alpha dev
to zrobię, ściągnę folder dev z gałęzi alpha.
Ta odpowiedź dotyczy twojego pierwszego pytania „git checkout naprawdę znaczy”.