Как сделать коммит после удаления каталога из GIT - PullRequest
0 голосов
/ 20 августа 2010

В некоторых публикациях говорится об удалении файла или каталога из GIT, но они не объясняют, как перенести эти изменения в главный репозиторий.

Например, это прекрасно работает для удаления каталога, но когда я пытаюсь нажать на это изменение в главном репозитории Git, мне отказывают:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to '/repo/project.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git push --help' for details.

Каков последний шаг, чтобы фактически выдвинуть это в основной репозиторий и фактически удалить этот каталог?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

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

git push --force
1 голос
/ 20 августа 2010

ответа Ника Льюиса достаточно, но я просто хочу добавить немного акцента, больше, чем уместится в комментарии. Вот цитата из справочной страницы git filter-branch:

ПРЕДУПРЕЖДЕНИЕ! Переписанная история будет иметь разные имена объектов для всех объектов и не будет сходиться с исходной ветвью. Вы не сможете легко перемещать и распространять переписанную ветку поверх оригинальной ветви. Пожалуйста, не используйте эту команду, если вы не знаете всех последствий , и в любом случае избегайте ее использования, если для решения вашей проблемы будет достаточно простого коммита. (Обратитесь к разделу «ВОССТАНОВЛЕНИЕ ОТ РЕБАЗЫ UPSTREAM» в git-rebase(1) для получения дополнительной информации о перезаписи опубликованной истории.)

Добавлено выделение курсивом - это очень важно. Фильтр-ветка действительно переписывает историю, она испортит любого, кто клонируется / извлечен из вашего репо, и это страшно. Вы должны действительно знать все это, прежде чем попробовать. Большинству людей здесь очень приятно давать напоминания всякий раз, когда они рекомендуют filter-branch или rebase; Я думаю, что уместно иметь здесь достаточно сильное повторение этого вопроса, ответ на который push --force, чтобы полностью переписать историю в вашем публичном репо. Это страшная операция.

...