Как вернуть мастер ветку в апстрим

145

Я разветвил репозиторий git и настроил апстрим. Я внес некоторые изменения в ветку Master, зафиксировал и отправил на github.

Теперь, что я должен сделать, чтобы отказаться от всех моих изменений в ветке Master и сделать ее идентичной основной ветке upstream?

Гелин Ло
источник

Ответы:

277

(Я предполагаю, что изменения, которые вы сейчас хотите игнорировать, находятся на вашем originпульте, вы находитесь в своей masterветке и хотите вернуться к содержимому upstreamпульта)

Во-первых, сбросьте вашу рабочую копию на основной мастер:

git remote update
# the double hyphen ensures that upstream/master is
# considered as a revision and not confused as a path
git reset --hard upstream/master --

Затем добавьте этот новый заголовок ветки в ваш исходный репозиторий, игнорируя тот факт, что это не будет ускоренной перемоткой вперед:

git push origin +master
nickgrim
источник
14
Может также потребоваться запустить, git remote add upstream <upstream_repo_url>если вы разветвляли ветку с помощью GitHub.
Като
3
В чем смысл +в git push origin +master? Это так же, как просто git push origin master?
bluenote10
4
@ bluenote10 Они не одинаковы. Это +то, что говорит Git «[игнорировать] тот факт, что это не будет ускоренная перемотка вперед». Это немного похоже на выполнение git push --force, но это относится только к этой конкретной ссылке.
Никгрим
1
Не работал для меня Я сделал статус git после того, как в нем есть элементы, которые были изменены. Я собираюсь вытереть и начать все сначала. Git чрезвычайно сложно понять.
Митч
1
@ mehmet Нет, это меняет только ту ветку, в которой вы находитесь.
Джон