Ответ 1
Другая методика, которую я только что нашел для решения этой проблемы (даже если я сначала удалил начало, что, по-видимому, является ошибкой), напрямую управляет конфигурацией git:
git config remote.origin.url url-to-my-other-remote
Я хочу изменить назначение удаленной ветки Git по умолчанию, чтобы я мог просто
git push
Вместо:
git push upstream
В настоящее время для этого установлен пуск источника, и я хочу установить его на другой пульт.
Я попытался удалить исходный (клонированный) удаленный
git remote rm origin
Который удалил оригинальный пульт. Но не решает проблему git push
. Я все еще получаю:
фатальный: нет настроенного адресата push. Укажите URL-адрес из списка командной строки или настроить удаленный репозиторий, используя...
Я также попытался сыграть с:
git remote set-url --push myfork origin
и другие параметры, но ни один из них не работает (возможно, потому, что я слишком быстро удалил удаленный пульт?)
После ответа здесь я попытался изменить:
git config push.default upstream (or matching)
но ни один из них не работал.
Другая методика, которую я только что нашел для решения этой проблемы (даже если я сначала удалил начало, что, по-видимому, является ошибкой), напрямую управляет конфигурацией git:
git config remote.origin.url url-to-my-other-remote
Вы можете использовать git push -u <remote_name> <local_branch_name>
для установки по умолчанию вверх по течению. Подробнее см. Документацию для git push.
Чтобы изменить, какой пульт дистанционного управления "подключен" к вашей ветке, используйте команду git branch
с флагом конфигурации восходящего потока.
Убедитесь, что удаленный доступ существует первым:
git remote -vv
Установите предпочтительный пульт дистанционного управления для текущей (вывешенной) ветки:
git branch --set-upstream-to <remote-name>
Подтвердить, что ветвь настроена с правильным пультом дистанционного управления:
git branch -vv
Работа с Git 2.3.2...
git branch --set-upstream-to myfork/master
Теперь status
, push
и pull
указываются на myfork
remote
С помощью этой команды вы можете легко изменить удаленный пул по умолчанию для всех ветвей.
git push -u <remote_name> --all
Просто пояснение (с использованием git версии 1.7.9.5 на ubuntu 12.04):
Git добавит/удалит пульты. Это удаленные экземпляры git с подключенным сервером.
git remote add myremote git://remoteurl
Затем вы можете получить указанный репозиторий git следующим образом:
git fetch myremote
Кажется, это создает ветку с именем "myremote", однако удаленный элемент для ветки не устанавливается автоматически. Для этого вы должны сделать следующее:
Сначала убедитесь, что у вас есть эта проблема, т.е.
git config -l | grep myremote
Вы должны увидеть что-то вроде:
remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master
Если вы видите branch.myremote.remote=.
, вы должны продолжить:
git config branch.myremote.remote myremote
git checkout myremote
git pull
Теперь вы должны быть в курсе удаленного хранилища, а ваши тяги/нажатия должны быть привязаны к соответствующему пульту. Вы можете переключать пульты таким образом, на каждую ветвь. [Примечание] [1]
Согласно a Официальная git Документация по настройке, вы можете настроить ветвь push по умолчанию (просто выполните поиск remote.pushdefault на этой странице), однако имейте в виду, что это не повлияет на хранилища/ветки, которые уже существуют, поэтому это будет работать, но только для новых репозиториев/веток. Вы должны помнить, что --global
установит пользовательские значения по умолчанию для репозитория (~/.gitconfig), --system
установит значения по умолчанию для системного репозитория (/etc/gitconfig), и ни один флаг не установит параметры конфигурации для текущего репозитория (./. gitconfig).
Также следует отметить, что параметр конфигурации push.default предназначен для настройки поведения ref-spec, удаленного поведения не.
[1]: git branch --set-upstream myotherremote
обычно работает здесь, однако git будет жаловаться, что он не будет устанавливать ветвь в качестве своего собственного пульта, если используется git branch --set-upstream myremote
. Я считаю, однако, что это неправильное поведение.
Если вы выполнили git push origin -u localBranchName:remoteBranchName
и последовательно использовали команды git push
, вы получите ошибки, которых тогда не существует origin, а затем выполните следующие действия:
git remote -v
Проверьте, есть ли какой-нибудь пульт, который меня не волнует. Удалить их с помощью git remote remove 'name'
git config --edit
Ищите возможные признаки старого/несуществующего пульта дистанционного управления. Ищите pushdefault
:
[remote]
pushdefault = oldremote
Обновите значение oldremote
и сохраните.
git push
должен работать сейчас.
Очень просто, собрав вместе некоторые из замечательных комментариев, а также мои собственные исследования этого.
Сначала проверьте локальную ветку, которую вы хотите привязать к вашей удаленной ветке:
git checkout mybranch
Следующий:
git branch -u origin/mybranch
где:
git branch -u {remote name}/{branch name}
Вы должны получить сообщение:
"Branch mybranch set up to track remote branch mybranch from origin."
Может быть полезно взглянуть на .git/config
внутри вашего репозитория, в нем будут перечислены все пульты, а также пульт по умолчанию для каждой ветки.
например.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = [email protected]:fii/web2016.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "bugfix/#8302"]
remote = origin
merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
remote = origin
merge = "refs/heads/feature/#8331"
[remote "scm"]
url = https://scm.xxx.be/git/web2016bs.git
fetch = +refs/heads/*:refs/remotes/scm/*
Вы можете внести изменения в этот файл вручную, чтобы удалить ненужный пульт, или обновить пульты по умолчанию для разных ваших веток.