Вот почему вы получаете сообщение об ошибке.
git checkout
может сделать одну из двух вещей.Если вы просто указываете ветку и не указываете какие-либо пути, она переключит вашу текущую ветку на указанную вами ветку.
git checkout mybranch # switch to branch 'my branch'
Если вы предоставите несколько путей, то git извлечет эти пути либо изиндекс или, если вы укажете ветку, из данной ветки.
git checkout myfile # checkout 'myfile' from index
Как видите, существует потенциальная неоднозначность.Что должно произойти, если у вас есть ветка с именем myfile
или файл с именем mybranch
?
Способ, которым git разрешает эту неоднозначность, заключается в том, что он проверяет параметр, чтобы определить, соответствует ли он сначала ветви, и еслине предполагает, что параметр ссылается на файл.Если у вас были ветвь и файл с одинаковым именем, вы можете заставить git рассматривать параметр как файл с этим синтаксисом.
git checkout -- myfile # treat 'myfile' as a file
Опция -b
, которая создает новую ветвь, действительна толькокогда вы используете форму переключения ветвей checkout
, а не когда извлекаете указанные файлы из индекса.
git checkout -b newbranch myfile # Illegal. I can't use `-b` when
# I'm checking out files.
Если вы попробуете git checkout -b newbranch origin/BRANCH
и получите эту ошибку, это означает, что origin/BRANCH
не соответствует названию какой-либо ветки, которую вы используете, так что git предположил, что вы должны ссылаться на файл.
Чтобы показать, какие ссылки на удаленные ветки у вас есть, вы можете сделать git branch -r
.Если у вас нет ссылки на ветку, которая, по вашему мнению, должна существовать, вам, возможно, придется выполнить git fetch
, чтобы получить ее с пульта.
Если вы предоставили -b
, но не указали имя ветви для базыновая ветвь отключена, git по умолчанию использует HEAD
, т. е. фиксацию, в которой включена ваша текущая извлеченная ветвь.
git checkout -b origin/BRANCH
Это создает новую локальную ветвь с именем origin/BRANCH
на основе вашего текущего коммита.Это, в лучшем случае, может вызвать у вас некоторую путаницу и совсем не похоже на то, что вы хотите.