Очистить историю коммитов - PullRequest
1 голос
/ 12 января 2012

У меня проблема с историей коммитов. Ну, это на самом деле не проблема, так как это не влияет на проблему, это скорее визуальная проблема. По сути, я работаю над проектом CakePHP, и я довольно беспорядочно пытался добавить CakePHP в качестве подмодуля, но потом я сдался. Проблема в том, что моя история теперь выглядит так (на Башне):

Screenshot from Tower

Как видите, строка останавливается и начинается снова, и до того, как появится вся история CakePHP, одна из ее репозитория git. Что я должен сделать, чтобы удалить все это ?! Спасибо.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Похоже, вы случайно включили CakePHP в свой проект, а не добавили его в качестве подмодуля.Самое простое, что можно сделать, это удалить весь репозиторий и начать все сначала (или создать новый репо и извлечь только ветку master из существующей).Вы также можете попробовать удалить все ссылки, оставленные при извлечении CakePHP, но это будет некоторая работа, и она оставит объекты в вашем репо на несколько месяцев, и, похоже, это новый проект, так что простоВытащить коммиты, которые вам нужны, в свежий репо, вероятно, будет проще.

Чтобы создать новый репо, который просто содержит основную ветвь вашего существующего, должно работать что-то вроде следующего:

mkdir newRepo
cd newRepo
git init
git fetch ../oldRepo/.git master:temp
git reset --hard temp
git branch -d temp

Это приведет только к ветке master и ничего больше.Бит с temp заключается в том, что в противном случае git откажется загружать в ГОЛОВУ непроявленного репо.

В любом случае, если у вас есть свежий репо, вы можете просто использовать

git submodule add git://url/for/CakePHP.git path/to/submodule

для добавления подмодуля.

1 голос
/ 12 января 2012

Ну, вы можете использовать git rebase -i, чтобы войти в интерактивный режим перебазирования, где вы можете выбрать, какие коммиты вы хотите сохранить, какие вы хотите объединить (squash), а какие полностью удалить (такизменения, примененные этим коммитом, удаляются из репо).Однако делать это следует только в том случае, если вы еще не поделились своей историей.Если история изменилась, и кто-то со старой историей попытается вытянуть / объединить с новой, это вызовет очень серьезные конфликты слияния, так как git не обнаружит никакой связи между историями.

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