Specjalna "opcja" --
oznacza "traktuj każdy argument za tym punktem jako nazwę pliku, bez względu na to, jak wygląda". To nie jest specyficzne dla Git, jest to ogólna konwencja linii poleceń Unix. Zwykle używa się go do wyjaśnienia, że argumentem jest nazwa pliku, a nie opcja, np.
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
bierze również --
oznaczać, że kolejne argumenty nie są jego opcjonalny parametr „treeish” Określanie które zobowiązują chcesz.
Więc w tym kontekście to bezpieczne używać --
zawsze, ale potrzeba że gdy plik, który chcesz przywrócić ma nazwę, która zaczyna się -
, czy jest taka sama jak nazwa gałęzi. Niektóre przykłady oddział/plików dezambiguacji:
git checkout README # would normally discard uncommitted changes
# to the _file_ "README"
git checkout master # would normally switch the working copy to
# the _branch_ "master"
git checkout -- master # discard uncommitted changes to the _file_ "master"
i opcja/plik ujednoznacznienie:
git checkout -p -- README # interactively discard uncommitted changes
# to the file "README"
git checkout -- -p README # unconditionally discard all uncommitted
# changes to the files "-p" and "README"
Nie jestem pewien, co zrobić, jeśli masz oddział, którego nazwa zaczyna się od -
. Być może nie rób tego w pierwszej kolejności.
w tym trybie; "Checkout" może również zrobić kilka innych rzeczy. Nigdy nie zrozumiałem, dlaczego git wybrał implementację "odrzuć niezatwierdzone zmiany" jako tryb podkomendy "kasy", zamiast "przywrócić" jak większość innych VCSów, lub "zresetować", co moim zdaniem może mieć więcej sensu w warunkach własnych gita.
Zobacz także [Znaczenie podwójnej kreski kasy Git] (http://stackoverflow.com/q/13321458/456814). –