как мне отменить все изменения в моем локальном представительстве и сделать его клоном восходящего потока в github

#git #github

#git #github

Вопрос:

на Github есть репозиторий, например github.com/foo/bar (==upstream)

Я разветвляю его на github.com/memo/bar (==origin)

Я клонирую это на свой жесткий диск

В течение x дней я извлекаю данные из upstream, редактирую и отправляю в origin.

Мои вопросы:

  1. Теперь я хотел бы отменить все мои изменения и сделать мой локальный master (и origin / master) идентичным upstream / master. Как мне это сделать? Я пробовал reset —hard upstream / master, но тогда я не могу перейти к origin.

  2. В качестве альтернативы, я хотел бы создать совершенно новую ветку, содержащую мою модифицированную версию (например, experimental_memo), а затем сделать мою основную ветку идентичной upstream / master

Если бы у меня не было форка github (origin), я бы просто клонировал с нуля, но тогда я не могу нажать, поэтому единственное решение, которое я нашел, это удалить мой форк на github, затем повторно разветвить, повторно клонировать и т.д.!

Ответ №1:

Предполагая, что у вас нет пользователей вашего форка, вы можете просто git push -f после сброса в origin. Это приведет к разрыву существующих клонов, поэтому его следует использовать, только если вы уверены, что никто другой не использует ваш форк.

Ответ №2:

Ваш вопрос кажется немного туманным.

Конечно, вы не можете нажать без --force после жесткого сброса на новый восходящий поток. Используйте —force, чтобы облегчить это (но помните о пользователях вашего собственного форка, если таковые имеются)

Я думаю, что вы, возможно, захотите перенести свою «модифицированную версию» (изменения) на новый upstream:

 git rebase upstream/master
  

Это все равно перепишет историю вашей ветки, но повторно применит все ваши моды