Я разветвил репозиторий, затем внес некоторые изменения, и, похоже, я все испортил.
Я хочу начать все заново, используя текущий upstream / master в качестве основы для моей работы.
Должен ли я перебазировать свой репозиторий или удалить его вообще?
Ответы:
Самое простое решение было бы (используя '
upstream
' в качестве удаленного имени, ссылающегося на разветвленное исходное хранилище):(Аналогично этой странице GitHub, раздел «Что мне делать, если я нахожусь в плохой ситуации?» )
Помните, что вы можете потерять изменения, внесенные в
master
ветке (как локально, из-заreset --hard
, так и на удаленной стороне, из-заpush --force
).Альтернативой может быть, если вы хотите сохранить свои коммиты
master
, чтобы воспроизвести эти коммиты поверх текущегоupstream/master
.Заменить часть сброса на
git rebase upstream/master
. Тогда вам все равно придется форсировать толчок.Смотрите также " Что мне делать, если я в плохой ситуации? "
Более полное решение, резервное копирование текущей работы (на всякий случай) подробно описано в разделе « Очистить ветку git master и перенести коммит в новую ветку ».
См. Также « Извлечение новых обновлений из исходного репозитория GitHub в разветвленный репозиторий GitHub », чтобы проиллюстрировать, что такое «
upstream
».Примечание: последние репозитории GitHub защищают
master
ветку отpush --force
.Поэтому вам придется
master
сначала снять защиту (см. Рисунок ниже), а затем повторно защитить ее после принудительного нажатия ).Примечание. В частности, в GitHub (февраль 2019 г.) имеется ярлык для удаления разветвленных репозиториев для запросов на извлечение, которые были объединены в апстрим.
источник
git reset --hard upstream/master
git reset
в ответе.git remote
» в stackoverflow.com/a/3903835/6309 .Люблю VonC ответ. Вот простая версия для начинающих.
Есть пульт Git,
origin
который, я уверен, вы все знаете. По сути, вы можете добавить столько пультов в репозиторий git, сколько захотите. Итак, что мы можем сделать, это ввести новый пульт, который является исходным репо, а не форком. Мне нравится это называтьoriginal
Давайте добавим оригинальные репо на наш форк как удаленный.
Теперь давайте возьмем оригинальный репозиторий, чтобы убедиться, что у нас есть последний код
Как предложил VonC, убедитесь, что мы находимся на мастере.
Теперь, чтобы ускорить наш форк с последним кодом в исходном репо, все, что нам нужно сделать, это сделать полную перезагрузку нашей основной ветки в соответствии с исходным пультом.
И вы сделали :)
источник
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.
на последний шаг. Любой совет?original
лучше, чемupstream
(который используется в Github docs), какorigin/master
и «upstream» от localmaster
. Уменьшает двусмысленность. Интересно, поэтому ты этим пользуешься?После @VonC отличный ответ. Ваша политика компании GitHub может не разрешать принудительное нажатие на мастера.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Если вы получили сообщение об ошибке, подобное этому, попробуйте выполнить следующие действия.
Для эффективного сброса вашей вилки вам необходимо выполнить следующие шаги:
Откройте ваш форк на GitHub, в «Настройки -> Ветви -> Ветвь по умолчанию» выберите «new_master» в качестве новой ветки по умолчанию. Теперь вы можете принудительно нажать на ветку 'master':
Затем вы должны установить «master» в качестве ветви по умолчанию в настройках GitHub. Чтобы удалить 'tmp_master':
Остальные ответы, предупреждающие о потере ваших изменений, по-прежнему применяются, будьте осторожны.
источник
Как это сделать на 100% через Sourcetree GUI
(Не всем нравится делать вещи через интерфейс командной строки git)
меры
Дважды щелкните по своей «основной» ветке, чтобы проверить, не проверена ли она уже.
Найдите коммит, в который вы хотите сбросить коммит, если вы назвали репо "master", вы, скорее всего, захотите найти коммит с тегом "master / master" на нем.
Щелкните правой кнопкой мыши на коммите> «Сбросить текущую ветку до этого коммита».
В диалоговом окне установите для поля «Using mode:» значение «Hard - отменить все изменения рабочей копии», затем нажмите «OK» (сначала внесите изменения, которые вы не хотите потерять, в отдельную ветку).
Ваш готово!
источник