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, deva index.htmltakże wszystko jest śledzone, a katalog roboczy jest czysty.
Jeśli przypadkowo zmienię nazwę pliku index.htmli chcę cofnąć, że po prostu git checkout index.htmlgo użyję, odzyska stan pliku z aktualnie wybranej gałęzi repozytorium.
Teraz, jeśli zrobiłem jakąś zmianę w devfolderze i chcę to odzyskać. Mogę użyć, git checkout devale co, jeśli istnieje już gałąź o nazwie devzamiast 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 devz aktualnie wybranej gałęzi.
Podobnie jeśli git checkout alpha devto zrobię, ściągnę folder dev z gałęzi alpha.
Ta odpowiedź dotyczy twojego pierwszego pytania „git checkout naprawdę znaczy”.