Ответ 1
Вы хотите, чтобы вы нажали локальный master
на удаленную ветку hotfixes
? Вот так:
git push origin +master:hotfixes
Однако для этого вам требуется перезаписать историю с удаленной стороны.
скажем, что у нас есть ветвь hotfixes
, которая была создана из master
. мы добавили committ to hotfixes
, но эти коммиты не были полезны, поэтому теперь мы хотим снова начать с новой копии master
.
чтобы уточнить, это ссылочный рабочий процесс: http://nvie.com/posts/a-successful-git-branching-model/
пусть также скажет, что мы нажали hotfixes
на пульт origin
, потому что у нас есть ужасная настройка и что единственный способ проверить что-то, поэтому нам нужно reset ветвь также на удаленном сервере.
как reset hotfixes
к копии master
?
Вы хотите, чтобы вы нажали локальный master
на удаленную ветку hotfixes
? Вот так:
git push origin +master:hotfixes
Однако для этого вам требуется перезаписать историю с удаленной стороны.
вот так я сделал это с помощью основных команд Git:
git checkout hotfixes
git reset --hard master
git push --force origin hotfixes
конечно, важно уведомить всех, кто работает над hotfixes
. скорее всего, им придется удалить свою локальную копию и начать с новой. альтернативная, менее инвазивная идея - создать новую ветку:
git checkout master
git branch -tb hotfixes-2 # this creates branch `hotfixes-2` from a copy of `master`
git push origin HEAD # this creates `hotfixes-2` on the remote server
Если я правильно понял ваш вопрос, то, что вы ищете, - это способ перемещения указателя ветки origin/hotfixes
, чтобы указать на текущую ревизию origin/master
.
Если это так, этот набор команд должен работать (если вы уже проверили hotfixes
в локальной репозитории git в прошлом):
# git branch -f does not allow modifying the currently checked out
# branch, so checkout any other branch than hotfixes
git checkout <SOME_OTHER_BRANCH_THAN_HOTFIXES>
# Move the branch pointer of hotfixes to the commit currently
# pointed by origin/master
git branch -f hotfixes origin/master
# Force push the history rewrite in the hotfixes branch
# into origin
git push -f origin hotfixes
Ответы здесь твердые. Я нуждался в этом точном изменении при сбросе моей промежуточной ветки на мастер. В этом случае я хочу, чтобы reset происхождение совпадало с master, а также reset my local, чтобы соответствовать этому. Итак, вот псевдоним git, который позволяет передавать имя ветки и выполнять обе команды за один ход. (Это немного опасно)
reorient = "!f() { git push origin +master:$1 && git reset --hard origin/$1 ; }; f"
Затем используйте его как:
git reorient hotfixes
Ответы выше были абсолютно правильными. Но это просто позволит уменьшить количество нажатий клавиш и ускорить ход! Надеюсь, поможет.