В моем github сейчас 100 коммитов. Мне нужно откатить репозиторий, чтобы зафиксировать 80, и удалить все последующие.
Почему? Предполагается, что это репо для слияния от разных пользователей. Куча слияний произошла как коммиты из-за чрезмерного редактирования. Это было связано с неправильной маркировкой моих удаленных веток, где 3 разработчика были помечены как друг друга. Мне нужно вернуться к этой точке, а затем потянуть вперед.
Я хотел сделать ребаз, как в этом примере: Как я могу удалить коммит на GitHub?
Тем не менее, git хочет, чтобы я занимался управлением конфликтами. Есть ли более простой способ?
git push -f origin branch
. У меня просто было плохое время, потому что я это пропустил.git push origin HEAD --force
вместо того, чтобы,git push -f origin branch
поскольку это выдавало мнеerror: src refspec branch does not match any.
ошибкуЧтобы отменить самый последний коммит, я делаю это:
Первый:
получить самый последний идентификатор SHA, чтобы отменить.
Это создаст новый коммит, который будет полностью противоположен вашему. Затем вы можете нажать эту новую фиксацию, чтобы привести ваше приложение в состояние, в котором оно было раньше, и ваша история изменений отобразит эти изменения.
Это хорошо для немедленного повторения чего-то, что вы только что совершили, что, как мне кажется, чаще всего происходит со мной.
Как заметил Майк, вы также можете сделать это:
источник
git revert HEAD
вернет последний коммит без необходимости искать хеш.Другой путь:
Извлеките ветку, которую вы хотите вернуть, а затем сбросьте свою локальную рабочую копию обратно на коммит, который вы хотите, чтобы он был последним на удаленном сервере (все после того, как оно пройдет до свидания). Для этого в SourceTree я щелкнул правой кнопкой мыши и выбрал «Сбросить BRANCHNAME для этого коммита».
Затем перейдите в локальный каталог вашего репозитория и выполните следующую команду:
Это удалит все коммиты после текущего в вашем локальном репозитории, но только для этой ветки.
источник
Большинство предложений предполагают, что вам нужно каким-то образом уничтожить последние 20 коммитов, поэтому это означает «переписывание истории», но это не обязательно.
Просто создайте новую ветку из коммита # 80 и продолжайте работу над этой веткой. Остальные 20 коммитов останутся на старой сиротской ветке.
Если вы абсолютно хотите, чтобы ваша новая ветвь имела то же имя, помните, что в основном это просто метки. Просто переименуйте вашу старую ветку во что-то другое, затем создайте новую ветку в коммите # 80 с нужным вам именем.
источник
При выполнении обновлений веток от мастера, я замечаю, что иногда перезагружаюсь, и ветка тоже сливается с мастером. Нашел способ отменить это.
Если ваш последний коммит был слиянием, нужна еще немного любви:
git revert -m 1 HEAD
источник
В github самый простой способ - удалить удаленную ветку в пользовательском интерфейсе github на вкладке ветки. Вы должны убедиться, что удалили следующие настройки, чтобы сделать ветку удаляемой:
Теперь воссоздайте его в вашем локальном хранилище, чтобы указать на предыдущую точку фиксации. и добавьте его обратно в удаленное репо.
Затем нажмите местную ветку на удаленный
Добавьте обратно ветку по умолчанию и защиту ветки и т. Д.
источник