Если у вас нет ранее существовавшей истории и вы просто хотите перезапустить ее в нужном месте, не перемещая слишком много файлов, дублирующий вопрос, упомянутый в комментариях, имеет для вас правильный ответ.
Если вы хотите сохранить существующую историю, но делать вид, все это случилось каталог выше, вот способ сделать это:
cd /project/src
git filter-branch --tree-filter 'mkdir src; git mv -k * .gitignore src'
cd ..
mv src junk
mv junk/src src
mv junk/.git .git
Команда filter-branch
переписывает вашу историю линию так, что все действие происходит под src/
иерархия. Остальное перемещает вещи на место. Если в нем нет пропущенных файлов, они будут оставлены в пространстве имен junk/
в конце.
Предупреждение: Я использовал git mv -k .gitignore src
как фильтр, потому что это быстрый и простой способ, но он не сможет перемещать любые DOT-файлы, которые вы могли бы иметь. (В этом случае добавьте их в команду.) Правильный способ состоял бы в том, чтобы использовать git ls-files
в качестве индексного списка, но это очень сложно сделать, если двигаться, поэтому, если вы можете избежать этого, средства делать.
Dupicate of http://stackoverflow.com/questions/1918111/my-git-repository-is-in-the-wrong-root-directory-can-i-move-it-inteadofof – exussum
Вы перемещаетесь это на один уровень выше по эстетическим соображениям или потому, что вы хотите включить каталог 'data' в репо? – R0MANARMY
@ user1281385 - Спасибо, не нашел, что раньше (и он не всплывал в предложениях для меня) – dan2k3k4