Как изменить удаленный филиал отслеживается?
Репозиторий central
должен был быть настроен на новом сервере, поэтому я создал новый пульт в своем локальном репо и нажал на него.
Но теперь, когда я делаю git pull
, он утверждает, что я в курсе. Это неправильно: это говорит мне о старой удаленной ветки, а не о новой, которая, как я знаю, имеет новые фиксации для извлечения.
Как изменить локальную ветвь для отслеживания другого пульта?
Я могу видеть это в файле конфигурации git, но я не хочу ничего испортить.
[branch "master"]
remote = oldserver
merge = refs/heads/master
Ответы
Ответ 1
Использование git v1.8.0 или новее:
git branch branch_name
--set-upstream-to
your_new_remote/branch_name
Или вы можете использовать переключатель -u
:
git branch branch_name
-u
your_new_remote/branch_name
Используя git v1.7.12 или ранее:
git branch --set-upstream branch_name your_new_remote/branch_name
Ответ 2
Для меня исправление было:
git remote set-url origin https://some_url/some_repo
Тогда:
git push
Ответ 3
С обновленной версией git (2.5.5) команда следующая:
git branch --set-upstream-to=origin/branch
Это приведет к обновлению удаленной отслеживаемой ветки для текущей локальной ветки
Ответ 4
Если вы здравомыслящны в этом, достаточно отредактируйте файл конфигурации. Если вы хотите быть немного параноиком, вы можете использовать команду фарфора, чтобы изменить его:
git config branch.master.remote newserver
Конечно, если вы посмотрите на конфигурацию до и после, вы увидите, что она сделала именно то, что вы собираетесь делать.
Но в вашем индивидуальном случае я бы сделал следующее:
git remote rename origin old-origin
git remote rename new-origin origin
То есть, если новый сервер будет каноническим удаленным, почему бы не назвать его источником, как если бы вы изначально клонировали его?
Ответ 5
Еще одна возможность иметь большой контроль над тем, что происходит, чтобы вручную редактировать свои конфигурации:
git config --edit
или сокращенное
git config -e
Затем отредактируйте файл по своему желанию, сохраните и ваши изменения будут применены.
Ответ 6
git fetch origin
git checkout --track -b local_branch_name origin/branch_name
или
git fetch
git checkout -b local_branch_name origin/branch_name
Ответ 7
Вы можете либо удалить свою текущую ветку, либо сделать:
git branch --track local_branch remote_branch
Или измените удаленный сервер изменений на текущий в конфигурации
Ответ 8
Это самая простая команда:
git push --set-upstream <new-origin> <branch-to-track>
Например, с учетом команды git remote -v
нечто вроде:
origin ssh://[email protected]/~myself/projectr.git (fetch)
origin ssh://[email protected]/~myself/projectr.git (push)
team ssh://[email protected]/vbs/projectr.git (fetch)
team ssh://[email protected]/vbs/projectr.git (push)
Вместо этого изменить отслеживание команды:
git push --set-upstream team master
Ответ 9
Основываясь на том, что я понимаю из последней git документации, синопсис:
git branch -u upstream-branch local-branch
git branch --set-upstream-to=upstream-branch local-branch
Это использование немного отличается от ответа urschrei, так как в его резюме:
git branch local-branch -u upstream-branch
git branch local-branch --set-upstream-to=upstream-branch
Я предполагаю, что они снова изменили документацию?
Ответ 10
В последней версии git, такой как 2.7.4,
git checkout branch_name
#branch имя, которое вы хотите изменить ветвь отслеживания
git branch --set-upstream-to=upstream/tracking_branch_name
#upstream - удаленное имя
Ответ 11
Я нашел сообщение @critikaster полезным, за исключением того, что мне приходилось выполнять эти команды с GIT 2.21:
$ git remote set-url origin https://some_url/some_repo
$ git push --set-upstream origin master