Nano Hash - криптовалюты, майнинг, программирование

Как отменить мерж-реквест с его коммитами?

Я сделал merge request для своей ветки develop на gitlab. Потом я понимаю, что совершил огромную ошибку. Я быстро нажал кнопку revert и подумал, что все в порядке, но это не так. Gitlab сделал только revert фиксации. В логах еще есть коммиты из исходной ветки. Это вызывает много проблем с версией. Есть ли какое-либо решение для отмены единого запроса на слияние на платформе gitlab и очистки журналов ветвей от многих нежелательных коммитов. Я бы хотел, чтобы моя ветка была такой, как если бы у этого мерж-реквеста никогда не было места.



Ответы:


1

Сначала создайте новую ветку keepsafe, чтобы все эти изменения остались где-то на случай, если вы накосячите. Это «скопирует» текущее состояние локально и также сохранит его на удаленном компьютере.

git checkout -b keepsafe
git push

Теперь вернитесь к разработке. X — это количество коммитов, которые вы хотите удалить.

git checkout develop
git reset --hard HEAD~X
git push -f

Локальная разработка будет жестко сброшена до исходного коммита. git push -f перезапишет удаленную ветку. Все коммиты исчезнут.

Обратите внимание, что GitLab позволяет администратору отключать принудительную отправку (git push -f), поэтому, если это не сработает, вам нужно поговорить с администратором. Но тогда вы, вероятно, должны сделать это в любом случае.

12.12.2018

2

Вы можете вернуться к предыдущей фиксации, используя интерактивную перезагрузку. Предполагая, что вы хотите вернуть HEAD к HEAD~5 (5 коммитов ранее), вы можете выбрать родителя HEAD~5, т.е. HEAD~6, и просто применить HEAD~5 поверх него.

git rebase -i HEAD~6

Каждая фиксация между HEAD~6 и HEAD будет перезаписана. Скажем, HEAD~5 SHA1 — это ABC, а HEAD~6 SHA1 — это XYZ. Текущий HEAD — PQR. Нам нужно удалить другие коммиты из приведенного ниже редактирования, так как мы не хотим переписывать их в HEAD~6. Мы просто хотим применить HEAD~5 поверх HEAD~6. У нас должна быть хотя бы одна запись в этом файле, иначе ребазирование прервется. Итак, мы применяем HEAD~5 поверх HEAD~6.

edit ABC     reverting to state before merge 

# Rebase XYZ..PQR onto XYZ
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

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

git commit --amend

Теперь введите команду ниже, чтобы продолжить и выйти из редактора.

git commit --continue

Подробнее об переписывании истории git

12.12.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..