Сообщение вверх по течению при переключении обратно в пустую ветвь?
Моя версия git Git -1.9.4-preview20140611
Раньше я клонировал пустой репозиторий оригинала git. Репозиторий клонирован, но со следующим сообщением
warning: вы, похоже, клонировали пустой репозиторий.
Проверка подключения... выполнена.
Затем скопирован файл .gitIgnore, который был в другом хранилище основных проектов git и передал его локальному хозяину. Этот файл использовался нами много раз. Это кажется прекрасным.
У нас есть стандартный файл .gitIgnore для всех наших проектов. Это было создано как часть лучших практик.
Затем создала новую ветвь и скопировала некоторый код в физическом местоположении, где находится локальная репозитория git
git checkout -b FromCC
Добавлен код и зафиксирован в этой ветке.
git add --all
git commit -M "Blah"
Все эти операции успешны.
Моя цель - объединить эти изменения в конечном итоге в локальную ветвь мастера.
Далее я
git checkout master
и получите следующее сообщение.
Ваша ветка основана на "origin/master", но вверх по течению нет. (используйте "git branch --unset-upstream" для исправления)
Что означает это сообщение?
Почему бы восходящий поток "уйти"?
Интересное наблюдение:
Я повторил тот же процесс с тем же главным хранилищем git сегодня. На этот раз репозиторий git не был пустым. У него был файл .gitIgnore. На этот раз указанное выше сообщение не появилось.
Ответы
Ответ 1
Это не восходящий репозиторий (сам origin
), а конкретная ветка, которую вы клонировали (master
по происхождению), которая отсутствует.
Кроме того, сообщение git вводит в заблуждение: ветвь master
по происхождению не исчезла, ее там никогда не было. Когда вы клонировали пустой репозиторий, у него вообще не было веток. У нее не было никаких отделений. Следовательно, ваш локальный master
, который был установлен для отслеживания origin/master
, был (есть) отслеживание ветки, которая (не) существует.
Это сообщение больше подходит для такой ситуации:
$ git clone ...
$ git checkout featureX # track some feature branch
[go away for a week, come back]
$ git fetch -p # update remote branches
где на этой неделе вы отсутствовали, ветвь featureX
была удалена (предположительно, объединена в свою линию разработки, а затем больше не нужна). На этом этапе вы находитесь на локальной ветке, featureX
, чтобы отслеживать удаленную ветвь origin/featureX
, но больше нет origin/featureX
.
В этом случае у вас есть локальная ветвь master
отслеживание origin/master
, когда еще нет origin/master
. После его создания (через push, который делает хранилище не пустым) проблема исчезнет. Это произошло только потому, что по умолчанию вы начинаете с master
, даже если пульт пуст и на самом деле еще не имеет master
.
Ответ 2
Я столкнулся с этим после создания полностью пустого репо на github и git clone
d для local. В том числе предупреждение о пустом репо. Затем commit
для вновь созданного локального файла дало сообщение о том, что "апстрим ушел".
Чтобы исправить это и использовать удаленный репозиторий в этом случае:
git push -u origin master
- Это переносит локально существующего мастера в удаленное хранилище github.
- Переключатель -u для push устанавливает восходящий поток (длинная версия --set -u pstream) в набор на github.
Сообщение пропало, так как главная ветка теперь также доступна на удаленном репо.
Ответ 3
У меня было такое же сообщение об ошибке с github.
Фактическая проблема заключалась в том, что я не одобрил приглашение в репозиторий. Поэтому git думал, что у меня не было прав на репо.