2015-06-12 5 views
28

Я новый пользователь Git. Я разветвил репозиторий под названием «Ложка-нож» (доступный для тренировки с помощью Git). Затем я клонировали его локально, запустивerror: pathspec 'test-branch' не соответствует ни одному файлу, известному git

git clone https://github.com/rohinichoudhary/Spoon-Knife.git 

Это хранилище содержит три ветви, т.е.

  • master,
  • test-branch,
  • change-the-title.

Когда я запустил git branch, он показывает только *master, а не оставшиеся две ветви. И когда я бегу

git checkout test-branch 

Я получаю следующее сообщение об ошибке:

error: pathspec 'test-branch' did not match any file(s) known to git.

Почему это происходит? Как я могу решить эту проблему?

+0

Убедитесь, что ваше имя филиала написано правильно из того же хранилища. – Shrawan

ответ

15

When I run git branch , it only shows *master , not the remaining two branches.

git branch не перечисляет test_branch, потому что нет такого местного отделения существуют в вашем местном репо, но. При клонировании репо создается только одна локальная ветвь (master, здесь) и выдается в результирующем клоне, независимо от количества ветвей, существующих в удаленном репо, с которого вы клонировали. На этом этапе test_branch существуют только в вашем репо, как remote-tracking branch, а не как местные филиал.

And when I run

git checkout test-branch 

I get the following error [...]

Вы должны использовать «старую» версию Git. В более поздних версиях (from v1.7.0-rc0 onwards),

If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, treat [ git checkout <branch> ] as equivalent to

$ git checkout -b <branch> --track <remote>/<branch> 

Просто запустите

git checkout -b test_branch --track origin/test_branch 

вместо этого. Или обновите последнюю версию Git.

+0

Я использую 'git version 1.9.1' –

+1

@rohinichaudhary вы уверены, что используете 1.9.1? Он doens't/не должен вести себя так, как https://gist.github.com/AD7six/7ee86b44804319979dff – AD7six

+0

@rohinichaudhary Запустить 'git branch -r'. Если вы видите список «origin/test-branch» и если вы действительно используете v1.9.1, тогда «git checkout test_branch» должен работать, как объяснено в моем ответе. – Jubobs

9

Мой друг, вы должны создать эти соответствующие ветви локально первых, для того, чтобы проверить, из этих других двух ветвей, используя следующую строку кода

git branch test-branch 

и

git branch change-the-title

, то только вы сможете сделать git checkout к этим ответвлениям

Кроме того, после создания каждой отрасли, принять последние изменения этих конкретных отраслей с помощью GIT тянуть происхождения branch_name, как показано ниже код

git branch test-branch 
git checkout test-branch 
git pull origin test-branch 

и для другой ветви имени переключающих титульного запустить следующий код = >

git branch change-the-title 
git checkout change-the-title 
git pull origin change-the-title 

Удачного программирования :)

+0

Ваш ответ может быть другим. Но прямая проверка удаленной ветви также работает (как указано в вышеприведенном ответе), если у вас есть клонирование полного репозитория, а не отдельная ветка. –

+0

@rohinichaudhary: абсолютно правильный. В старой версии Git это не сработало для меня. Я использовал более старую версию Git, теперь собираюсь обновить :) –

9

Вы также можете получить эту ошибку с любой версией мерзавца, если удаленный филиал был создан fter ваш последний клон/выборка, и ваше местное репо еще не знает об этом. Я решил это, сделав сначала git fetch, который «сообщает» вашему местному репо обо всех удаленных филиалах.

git fetch 
git checkout test-branch 
6

Современный Git должен иметь возможность обнаруживать удаленные ветви и создавать локальный при оформлении заказа.

Однако, если вы сделали a shallow clone (например, с --depth 1), попробуйте следующие команды, чтобы исправить это:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' 
git fetch --all 

и попробуйте проверить из ветви снова.

Альтернативно, попробуйте очистить свой клон, например. git fetch --unshallow и повторите попытку.

Смотрите также: How to fetch all remote branches?

+0

Ни один из других ответов не работал для меня (с Git 2.7.4), но этот сделал, спасибо! Я думаю, что я, должно быть, клонировал этот репозиторий с помощью -depth 1 и, таким образом, получил странную настройку 'remote.origin.fetch'. – qris

3

только три шага, мерзавец проблема филиал будет решена.

git remote update
git fetch
git checkout --track origin/test-branch

+0

Работает для меня! Спасибо – ArtStyle

0

Эта ошибка также может появиться, если ваш мерзавец ветвь не исправить, хотя чувствительны к мудрым. В моем случае я получал эту ошибку, поскольку фактическое название ветки было «CORE-something», но я принимал притяжение, как «core-something».

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/16869901) –

0

Решение:

Чтобы исправить это вам нужно получить первый

$ git fetch origin 

$ git rebase origin/master 

Текущий мастер филиал находится в актуальном состоянии.

$ git checkout develop 

Отдел разработки, разработанный для отслеживания удаленной ветви, развивается из источника.

Подключено к новой ветке 'develop'

Смежные вопросы