Как я могу отложить репозиторий github на конкретный коммит?

У моего github сейчас 100 коммитов. Мне нужно отменить репозиторий на фиксацию 80 и удалить все последующие.

Почему?  Это репо должно быть для слияния с разными пользователями. Из-за чрезмерного редактирования произошла куча слияний. Это произошло из-за неправильной маркировки моих удаленных веток, где 3 разработчика были помечены как друг друга. Мне нужно reset до этой точки, а затем тянуть вперед.

Я хотел бы переустановить, как в этом примере: Как удалить фиксацию на GitHub?

Однако git хочет, чтобы я делал много конфликтов. Есть ли более простой способ?

Ответ 1

git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>

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

Ответ 2

По-другому:

Извлеките ветку, которую вы хотите вернуть, а затем сбросьте свою локальную рабочую копию обратно на коммит, который вы хотите, чтобы он был последним на удаленном сервере (все после того, как оно пройдет до свидания). Для этого в SourceTree я щелкнул правой кнопкой мыши и выбрал "Сбросить BRANCHNAME для этого коммита".

Затем перейдите в локальный каталог вашего хранилища и выполните следующую команду:

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f -- tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME 

Это удалит все коммиты после текущего в вашем локальном репозитории, но только для этой ветки.

Ответ 3

Чтобы отменить последнее совершение, я делаю это:

Во-первых:

git log

получить самый последний идентификатор SHA для отмены.

git revert SHA

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

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

Как сказал Майк, вы также можете сделать это:

git revert HEAD

Ответ 4

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

Если ваш последний коммит был слиянием, нужна еще немного любви:

git revert -m 1 ГОЛОВА

Ответ 5

В github самый простой способ - удалить удаленную ветку в пользовательском интерфейсе github на вкладке ветки. Вы должны убедиться, что удалили следующие настройки, чтобы сделать ветку удаляемой:

  1. Не ветка по умолчанию
  2. Нет запросов на открытие опроса.
  3. Ветка не защищена.

Теперь воссоздайте его в вашем локальном хранилище, чтобы указать на предыдущую точку фиксации. и добавьте его обратно в удаленное репо.

git checkout -b master 734c2b9b   # replace with your commit point

Затем нажмите местную ветку на удаленный

git push -u origin master

Добавьте обратно ветку по умолчанию и защиту ветки и т.д.