2015-10-14 2 views
1

Я сделал некоторые нежелательные изменения в моей раздвоенной копии восходящего репо, и восходящее репо также изменилось за это время. Поэтому я хочу, чтобы в основном разветвить новую копию репозитория upstream без каких-либо изменений.Git: Сброс forked repo в текущую копию репозитория upstream

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

  1. следуя инструкциям на How do I update a GitHub forked repository? для перебазирования, кроме (я не хочу, чтобы мои собственные фиксаций быть переигран). Это говорит мне, что я в курсе, и никаких изменений не внесено, но мое разветвленное репо все еще не совпадает с текущим репо.

  2. Следуйте инструкциям на Reset local repository branch to be just like remote repository HEAD. Это работает с файлами и изменяет их, однако также предполагает, что теперь я редактирую репозиторий вверх. Моя разветвленная копия не сбрасывается.

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

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

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

ответ

3

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

  • мерзавец клонировать исходный репозиторий (а не вилкой)
  • переименовать удаленное происхождение на вышестоящие

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

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

    git push origin --force --all 
    

(см the discussion for an illustration of those commands)

+0

Благодаря @VonC, но по какой-то причине это не похоже, чтобы решить эту проблему .. он говорит «все в актуальном состоянии», но когда я проверяю свое репо на github.com, ни одно из изменений не прошло, он все еще говорит: «Эта ветка на 7 коммитов впереди ». Я думаю, что я сделал все в соответствии с инструкциями, за исключением того, что у меня уже был удаленный восходящий поток, поэтому мне пришлось его удалить. Я приложу скриншот моих журналов командной строки, чтобы вы могли увидеть, что я делаю что-то неправильно, если вы не возражаете. – misaochan

+0

@melange right: это потому, что конфигурация ветки все еще говорит: 'branch.xxx.remote upstream'. Замените 'upstream' на' origin' в '.git/config' для каждой строки' branch.xxx.remote' и снова попробуйте 'git push -force -all'. – VonC

+0

VonC, вы имеете в виду отредактировать URL-адрес восходящего канала в файле конфигурации в моей директории .git, правильно? – misaochan

Смежные вопросы