Git: сбросить разветвленное репо на текущую копию вышестоящего репо.

Я внес некоторые нежелательные изменения в свою разветвленную копию репозитория основной ветки, и репозиторий основной ветки также изменился за это время. Итак, что я хочу сделать, так это разветвить свежую копию исходного репозитория, не сохраняя никаких моих изменений.

К сожалению, я вообще не могу понять, как это сделать. Я пробовал три метода:

  1. Следуя инструкциям на странице Как обновить разветвленный репозиторий GitHub? кроме для перебазирования (я не хочу, чтобы мои собственные коммиты воспроизводились). Это говорит мне, что я в курсе, и никаких изменений не внесено, но мое разветвленное репо все еще не совпадает с текущим вышестоящим репо.

  2. Следуя инструкциям в Сбросьте ветку локального репозитория, чтобы она была точно так же, как удаленный репозиторий HEAD . Это работает с файлами и изменяет их, однако также предполагает, что вместо этого я редактирую вышестоящее репо. Моя разветвленная копия не сбрасывается.

  3. Следуйте инструкциям на странице http://www.hpique.com/2013/09/updating-a-fork-directly-from-github/ однако у меня нет возможности «переключить базу», когда я это делаю.

К сожалению, я новичок в GitHub, что делает все еще более запутанным. Я полагаю, что в крайнем случае я мог бы удалить свое разветвленное репо и начать все сначала, но я бы предпочел не делать этого, если это возможно.

Редактировать: исправлено с помощью VonC. Необходимо клонировать вышестоящее репо в новую папку в качестве моей локальной копии вместо существующей папки.


person misaochan    schedule 14.10.2015    source источник


Ответы (1)


Если вы действительно хотите отменить свои изменения и сбросить все до исходного (исходного) состояния репо, вы можете:

  • git клонировать исходный репо (не ваш форк)

  • переименуйте удаленный источник в восходящий

      git remote rename origin upstream
    
  • добавьте origin с URL вашей вилки:

      git remote add origin https://github.com/<you>/<yourFork>
    
  • нажмите/сбросьте все ветки в свою ветку:

      git push origin --force --all
    

(см. обсуждение для иллюстрации этих команд)

person VonC    schedule 14.10.2015
comment
Спасибо @VonC, но по какой-то причине это не решает проблему ... он говорит, что все обновлено, но когда я проверяю свое репо на github.com, ни одно из изменений не прошло, он все еще говорит, что в этой ветке 7 коммитов впереди ‹вверх по течению›. Я думаю, что сделал все по инструкции, за исключением того, что у меня уже был удаленный апстрим, поэтому мне пришлось его удалить. Я прикреплю скриншот своих журналов командной строки, чтобы вы могли видеть, делаю ли я что-то не так, если вы не возражаете. - person misaochan; 14.10.2015
comment
@melange правильно: это потому, что в конфигурации ветки все еще написано: branch.xxx.remote upstream. Замените upstream на origin в .git/config для каждой branch.xxx.remote строки и повторите попытку git push --force --all. - person VonC; 14.10.2015
comment
VonC, вы имеете в виду отредактировать исходящий URL-адрес в файле конфигурации в моем каталоге .git, верно? - person misaochan; 14.10.2015
comment
@melange no: это было сделано удаленными командами git выше. Я имею в виду замену слова upstream на origin в строках файла .git/config на branch.xxx.remote (например, branch.master.remote upstream изменилось на branch.master.remote origin) - person VonC; 14.10.2015
comment
Вы имеете в виду такие строки в .git/config? fetch = +refs/heads/*:refs/remotes/upstream/* Я заменил это и перезапустил git push, но, похоже, он дает тот же результат. Я приложу еще один скриншот... Извините за это, и спасибо за терпение! - person misaochan; 14.10.2015
comment
@melange нет строк, которые включают branch.<abranchname>.remote - person VonC; 14.10.2015
comment
Однако в моем файле .git/config такой строки нет. :( Я вставил весь файл конфигурации в свой вступительный пост. - person misaochan; 14.10.2015
comment
@melange Я только что видел ваш файл конфигурации, и я не понимаю, почему у восходящего потока и источника один и тот же URL-адрес. Упомянутые мной удаленные команды git должны были установить для них два разных URL-адреса. - person VonC; 14.10.2015
comment
Давайте продолжим обсуждение в чате. - person VonC; 14.10.2015
comment
@melange Вы клонировали репо, а затем запустили команду без перехода в папку репо. Остальные команды следует запускать из корня проекта. - person Harish Ved; 14.10.2015
comment
@VonC Я думаю, что локальная папка, которую он клонирует, также имеет родительский репозиторий .git. - person Harish Ved; 14.10.2015
comment
@melange, вы можете присоединиться к chat.stackoverflow.com/rooms/92246/? - person VonC; 14.10.2015
comment
@HarishVed, вы можете присоединиться к chat.stackoverflow.com/rooms/92246/? - person VonC; 14.10.2015