Значение Git checkout double dashes

В чем смысл двойных тире перед именем файла в этой git команде?

git checkout --ours -- path/to/file.txt
git checkout --theirs -- path/to/file.txt

Обязательны ли они? Это эквивалентно

git checkout --ours path/to/file.txt
git checkout --theirs path/to/file.txt

Ответ 1

Предположим, что у меня есть файл с именем path/to/file.txt в моем репозитории Git, и я хочу вернуть его на него.

git checkout path/to/file.txt

Теперь предположим, что файл имеет имя master...

git checkout master

Упс! Это вместо этого изменило ветки. -- разделяет дерево, которое вы хотите проверить, из файлов, которые вы хотите проверить.

git checkout -- master

Это также помогает нам, если какой-либо freako добавил файл с именем -f в наш репозиторий:

git checkout -f      # wrong
git checkout -- -f   # right

Это описано в git -checkout: аргументация аргумента.

Ответ 2

Двойная тире "-" означает "конец флагов командной строки", то есть она сообщает предыдущей команде не пытаться разобрать, что происходит после параметров командной строки.