Здесь сценарий: я создаю репозиторий forex someones из Github и клонирую его в локальный каталог. Я делаю изменения, фиксирую их и выталкиваю в свой разветвленный репозиторий. Затем я отправляю запрос на перенос в исходный репозиторий, но по какой-либо причине он отклоняется. Затем исходный репозиторий получает некоторые коммиты от других людей, оставляя устаревшую версию. Теперь, как мне получить последнюю версию исходного репо (на мое раздвоенное репо и локально)? А также, как удалить историю фиксации с Github для моего отклоненного коммита?
Как повторно захватить разветвленный револьвер Git без удаления и повторного размножения?
Ответ 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
Унесенные.