Как отменить запрос на слияние с его коммитами? - PullRequest
0 голосов
/ 12 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете вернуться к предыдущему коммиту с помощью интерактивного перебазирования.Предполагая, что вы хотите вернуть 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.Текущий заголовок PQR.Нам нужно удалить другие коммиты из приведенного ниже редактирования, так как мы не хотим переписывать их на HEAD ~ 6.Мы просто хотим применить HEAD ~ 5 поверх HEAD ~ 6.У нас должна быть хотя бы одна запись в этом файле, иначе rebase будет прервана.Итак, мы применяем 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

0 голосов
/ 12 декабря 2018

Сначала создайте новую ветку 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), поэтому, если это не сработает, вам нужно поговорить с администратором.Но тогда тебе, вероятно, следовало бы так поступить.

...