GIT: как раздавить несколько коммитов, которые были перенесены в удаленное репо? - PullRequest
16 голосов
/ 15 октября 2011

У меня странная настройка с Git.В основном у меня есть:

[client 1] <---> [remote repo] ----> [client 2]

[Клиент 1] по сути является локальным репо, с которым я работаю, потому что я не могу скомпилировать / собрать проект на своей локальной машине.

[Клиент2] - это удаленный сервер для сборки.

В середине у меня есть еще одно репо, [удаленное репо], в основном для синхронизации с центральным репозиторием cvs в моей компании, а также для синхронизации между моим [клиентом 1]и [клиент 2].

Поскольку вся компиляция / сборка выполняется на [клиенте 2], у меня есть много тривиальных коммитов на [клиенте 1] только для исправления ошибок компиляции или сборки.

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

Как я могу раздавить эти (много) тривиальные коммиты в один?Спасибо.

Ответы [ 2 ]

27 голосов
/ 15 октября 2011

Прежде всего, избегайте раздавливания и вообще переписывания истории, если в этом нет особой необходимости.Наличие «тривиальных» коммитов не является причиной для раздавливания коммитов.Если они могут остаться, пусть останутся.И переписывание истории не совсем просто в cvs, поэтому, поскольку эти коммиты попали бы в репозиторий cvs, вы, вероятно, должны с этим жить.

Для удаленного репозитория git, если вы хотите продолжить- Я предполагаю, что вы знаете, как раздавить коммиты в вашем локальном репо (git rebase -i просто).После сквоша, толкните -f - силовой толчок.

14 голосов
/ 15 октября 2011

Вы можете раздавить коммиты с помощью git rebase -i или git merge --squash, см. Раздавить мои последние X коммитов вместе, используя Git

Но так как вы уже опубликовали их в другом хранилище, вы должны исправить это на других. Довольно громоздко, но git push --force - это команда, которая вам нужна.

Однако это не рекомендуется: если удаленное хранилище уже синхронизировано с CVS, вам придется исправить это тоже ... То же самое, если другие разработчики уже извлекли из него данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...