#git #github
#git #github
Вопрос:
на Github есть репозиторий, например github.com/foo/bar (==upstream)
Я разветвляю его на github.com/memo/bar (==origin)
Я клонирую это на свой жесткий диск
В течение x дней я извлекаю данные из upstream, редактирую и отправляю в origin.
Мои вопросы:
-
Теперь я хотел бы отменить все мои изменения и сделать мой локальный master (и origin / master) идентичным upstream / master. Как мне это сделать? Я пробовал reset —hard upstream / master, но тогда я не могу перейти к origin.
-
В качестве альтернативы, я хотел бы создать совершенно новую ветку, содержащую мою модифицированную версию (например, experimental_memo), а затем сделать мою основную ветку идентичной upstream / master
Если бы у меня не было форка github (origin), я бы просто клонировал с нуля, но тогда я не могу нажать, поэтому единственное решение, которое я нашел, это удалить мой форк на github, затем повторно разветвить, повторно клонировать и т.д.!
Ответ №1:
Предполагая, что у вас нет пользователей вашего форка, вы можете просто git push -f
после сброса в origin. Это приведет к разрыву существующих клонов, поэтому его следует использовать, только если вы уверены, что никто другой не использует ваш форк.
Ответ №2:
Ваш вопрос кажется немного туманным.
Конечно, вы не можете нажать без --force
после жесткого сброса на новый восходящий поток. Используйте —force, чтобы облегчить это (но помните о пользователях вашего собственного форка, если таковые имеются)
Я думаю, что вы, возможно, захотите перенести свою «модифицированную версию» (изменения) на новый upstream:
git rebase upstream/master
Это все равно перепишет историю вашей ветки, но повторно применит все ваши моды