Вы закрыли свой единственный вариант (т. Е. Отказываетесь установить восходящий поток), поэтому у вас не останется ни одного варианта: вы должны указать ветвь.Обратите внимание, что вы можете написать свой собственный инструмент, который делает это.
Ответ на почему это так сложен и философичен, и до людей, которые поддерживают Git.Однако, в принципе, мы можем взглянуть на эти факты:
В Git глагол push
не является противоположностью глагола pull
.Что касается противоположностей, то они push
и fetch
.(Глагол pull
означает «получить, затем объединить или перебазировать», более или менее.)
Как бы близки они ни были, push
и fetch
не являютсясимметричны.Когда вы используете git fetch <em>remote</em>
, вы вносите коммиты из другого репозитория в свой репозиторий, а затем настраиваете имена для удаленного отслеживания , чтобы указывать на самые передовые из таких коммитов.Другой репозиторий имеет некоторый набор веток B 1 ... B n , и для каждого такого имени в вашем репозитории теперь есть актуальнаяremote/B<sub>i</sub>
.
С другой стороны, поскольку вы устанавливаете push.default
на current
, когда вы используете git push <em>remote</em>
, ваш Git отправляет все необходимые коммиты для вашей текущей ветки C , а затем просит удаленного remote
установить его ответвление C , чтобы указать на тот же коммит.Перед C не вставлен квалификатор, например, eugen/
, чтобы сделать его уникальным для вас; вы просите, чтобы его Git установил их name C напрямую.
Даже если вы использовали какую-либо другую настройку push, вы все равно, как правило, просили бы пульт дистанционного управления установить их собственную ветвь.Команда fetch
имеет все пространство имен, выделенное для каждого пульта: вы устанавливаете свой refs/remotes/<em>remote</em>/<em>renamed</em>
, а не свой refs/heads/<em>name</em>
.Команда push заставляет их установить свои refs/heads/<em>name</em>
.
Здесь в Git встроено предположение: выборка из множества, push в один. Это предположение недолжны соблюдаться, но доступные синтаксисы и система пространства имен для удаленного отслеживания созданы для его поддержки.Когда вы выходите за пределы этой системы, вы должны использовать несколько неуклюжий синтаксис.Это ваш выбор, как справиться с этим (Git имеет много инструментов).
Если вы выбираете только один и нажимаете на один, вам вообще не понадобятся именованные пульты (зачем беспокоиться о origin
если есть только один из них?).Git может даже предположить по умолчанию, что имена ветвлений всегда будут одинаковыми при извлечении и отправке, и выполнять выборку и отправку без необходимости каких-либо восходящих настроек.Конечно, это ограничит вас извлечением push-to-one из одного.
Если Git предполагает выборку из 1078 * от многих, push для многих систем , у него может быть способделай что хочешь.Но это не так (предположим, что это так), поэтому нет (есть способ сделать то, что вы хотите).