Подтвердить что ты не робот

Как reset ветвь в другую ветвь с git?

скажем, что у нас есть ветвь hotfixes, которая была создана из master. мы добавили committ to hotfixes, но эти коммиты не были полезны, поэтому теперь мы хотим снова начать с новой копии master.

чтобы уточнить, это ссылочный рабочий процесс: http://nvie.com/posts/a-successful-git-branching-model/

пусть также скажет, что мы нажали hotfixes на пульт origin, потому что у нас есть ужасная настройка и что единственный способ проверить что-то, поэтому нам нужно reset ветвь также на удаленном сервере.

как reset hotfixes к копии master?

4b9b3361

Ответ 1

Вы хотите, чтобы вы нажали локальный master на удаленную ветку hotfixes? Вот так:

git push origin +master:hotfixes

Однако для этого вам требуется перезаписать историю с удаленной стороны.

Ответ 2

вот так я сделал это с помощью основных команд 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

Ответ 3

Если я правильно понял ваш вопрос, то, что вы ищете, - это способ перемещения указателя ветки 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

Ответ 4

Ответы здесь твердые. Я нуждался в этом точном изменении при сбросе моей промежуточной ветки на мастер. В этом случае я хочу, чтобы reset происхождение совпадало с master, а также reset my local, чтобы соответствовать этому. Итак, вот псевдоним git, который позволяет передавать имя ветки и выполнять обе команды за один ход. (Это немного опасно)

reorient = "!f() { git push origin +master:$1 && git reset --hard origin/$1 ; }; f"

Затем используйте его как:

git reorient hotfixes

Ответы выше были абсолютно правильными. Но это просто позволит уменьшить количество нажатий клавиш и ускорить ход! Надеюсь, поможет.