Подтвердить что ты не робот

Как повторно захватить разветвленный револьвер Git без удаления и повторного размножения?

Здесь сценарий: я создаю репозиторий forex someones из Github и клонирую его в локальный каталог. Я делаю изменения, фиксирую их и выталкиваю в свой разветвленный репозиторий. Затем я отправляю запрос на перенос в исходный репозиторий, но по какой-либо причине он отклоняется. Затем исходный репозиторий получает некоторые коммиты от других людей, оставляя устаревшую версию. Теперь, как мне получить последнюю версию исходного репо (на мое раздвоенное репо и локально)? А также, как удалить историю фиксации с Github для моего отклоненного коммита?

4b9b3361

Ответ 1

Никогда не делайте свои собственные изменения в основной ветке, вы должны создать новую ветвь, внесите свои изменения и нажмите ее. В любом случае, если вы хотите сделать свой филиал равным дистанционному:

Предполагая, что у вас есть восходящий поток как удаленный git fetch upstream git checkout -f -B master upstream/master

Вышеупомянутая команда проверки должна быть, если ведущий мастер идет вперед и перезаписывает его с восходящим/ведущим, если его не создает его из восходящего/ведущего.

Если у вас нет восходящего потока, добавленного в качестве удаленного использования git remote add upstream repositoryurl

EDIT: он должен быть -B

EDIT: git reset --hard upstream/master является более подходящим на самом деле

Ответ 2

Сохранение вашего разветвленного репозитория на синхронизаторе GitHub является двухэтапным процессом.

  • Поддерживайте локальное репо в синхронизации с:

    git fetch вверх по течению; git merge upstream/master

  • Держите свою вилку на GitHub в синхронизации с местным репо

    git нажмите начало оригинала

Посмотрите GitHub Fork A Repo для некоторого объяснения. Вам нужно настроить "вверх по течению" в качестве удаленного в репозиторий, из которого вы раздвоены.

Для ваших "отклоненных коммитов", если вы сделали их на локальном ветки, вы можете просто удалить ветвь. Если он не находится в локальной ветке, вам нужно reset HEAD ветки вернуться к фиксации по вашему выбору. Как:

# Assume you are on master and need to go back to commit BeadBabe
git checkout -b temp
git branch -f master BeadBabe
git checkout master
git branch -d temp

Унесенные.