2012-01-12 3 views
1

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

Screenshot from Tower

Как вы можете видеть, линия останавливается и начинается снова, и до того, как все истории CakePHP, то один из его мерзавца хранилища , Что мне делать, чтобы удалить все это ?! Благодарю.

ответ

1

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

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

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

Это будет только принести master ветку и больше ничего. Бит с temp состоит в том, что git иначе откажется вступить в HEAD не-голого репо.

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

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

добавить подмодуль.

+0

Да, я думаю, что я Я сделаю это или, так как коммиты не появляются в моем репо онлайн, я просто проверю это, поэтому я сохраню текущие коммиты без них! Спасибо за подсказку! :) – entropid

1

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

+0

Проблема в том, что эти коммиты не отображаются в 'git rebase -i'! Я уже пробовал. :( – entropid

+2

@Entropy: В этом случае вам может потребоваться рассказать нам немного больше о том, какие коммиты вы хотите удалить, и о том, что вы уже пробовали (например, как именно вы назвали 'git rebase -i') – Grizzly

Смежные вопросы