Gerrit случайно представил некоторые комманды слияния (с настройкой «Слить при необходимости»), и я хотел бы удалить их из истории. Я знаю о подводных камнях истории перезаписи, когда команда работает с Git, но разработчики не пострадают от этого в нашем случае, так как ни у одного из них нет локальных изменений в этом конкретном репозитории.Как переписать историю на gerrit?
Я сделал git rebase -i
локально, и Git автоматически удалил слияние Gerrit. Я тщательно удалил предыдущие идентификаторы изменений Gerrit в каждом сообщении о фиксации, а крюк сообщения фиксации Gerrit добавил новые.
git status
команда вывода:
On branch master Your branch and 'origin/master' have diverged, and have 7 and 9 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working directory clean
Что я хочу (9 фиксаций минус 2 слияния совершает).
Когда я пытаюсь нажать на Gerrit с git push origin HEAD:refs/for/master
, я не получаю ошибки. Однако, когда я пытаюсь проанализировать и представить на веб-интерфейс Геррит, я получаю следующее сообщение об ошибке:
The change could not be merged due to a path conflict. Please rebase the change locally and upload the rebased commit for review.
Что я сделал не так?
Спасибо за ваш ответ, но когда я выполняю следующую команду: «git push -f origin HEAD: refs/heads/master», я получаю сообщение об ошибке:! [удаленный отказ] HEAD -> ошибка master (non-fast forward): не удалось нажать некоторые ссылки на 'ssh: // repositories: 29418/repository'. У меня есть следующие права на refs/heads/*: Создать ссылку/Push/Submit. Нужно ли мне еще? –
Да, но имя разрешения зависит от вашей версии Gerrit. См. Http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_push - Прямой push: параметр Force Позволяет удалить существующую ветку. Поскольку принудительное нажатие эффективно удаляет сразу же после создания, но выполняется атомарно на сервере и регистрируется, этот параметр также разрешает принудительные push-обновления ветвям. Включение этой опции позволяет исключить существующие коммиты из истории проекта. – Brad
Он отлично работал с силовым вариантом! Благодарю. –