http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
Я нашел сообщение.
Но до сих пор не знаю, в чем разница между
git checkout <filename>
git checkout -- <filename>
В какой ситуации я должен использовать первый и второй соответственно?
Ответы:
Специальная «опция»
--
означает «обрабатывать каждый аргумент после этой точки как имя файла, независимо от того, как он выглядит». Это не зависит от Git, это общее соглашение командной строки Unix. Обычно вы используете его, чтобы пояснить, что аргумент - это имя файла, а не параметр , напримерgit checkout
1 также--
означает, что последующие аргументы не являются его необязательным «древовидным» параметром, определяющим, какой коммит вы хотите.Так что в этом контексте безопасно использовать
--
всегда, но вам это нужно, когда файл, который вы хотите восстановить, имеет имя, которое начинается с-
или совпадает с именем ветки. Некоторые примеры разрешения неоднозначности ветки / файла:и значение параметра / файла:
Я не знаю, что делать, если у вас есть ветка , имя которой начинается с
-
. Возможно, не делайте этого в первую очередь.1 в этом режиме; "checkout" может делать и несколько других вещей. Я никогда не понимал, почему git решил реализовать «отменить незафиксированные изменения» в качестве режима подкоманды «checkout», а не «вернуться», как большинство других VCS, или «сбросить», что, как мне кажется, могло бы иметь больше смысла в терминах git.
источник
--
широко применяется разделитель между параметрами и аргументами. Он работает с любой программой / утилитой, которая использует POSIXgetopt(3)
для обработки своих параметров командной строки (см.man 3 getopt
), Сценариев оболочки, которые используютgetopt(1)
, и некоторых программ, которые реализуют его сами, но не всегда гарантируется работа.--
означает «отменить изменения» а-ля C / C ++ - и с тех пор думал об этом. С ума сойти!Все, что следует за
--
символом, рассматривается как имя файла (а не как аргумент программы). Это важно, если, например, у вас есть имена файлов, начинающиеся с тире.источник