Так или иначе, когда я git init
редактор мой последний проект приблизительно один месяц назад я выполнил команду в каталоге один каталог выше, чем корень моего проекта.
Таким образом, мой репозиторий находится в ./project
каталог а не ./project/my-new-project
каталог. Я не знаю, как я не понял проблему ранее, но я просто никогда не искал .git каталог до сих пор.
Существует ли путь, не уничтожая мой проект, чтобы переместить репозиторий в надлежащий каталог и затем сказать мерзавцу, какова новая основа проекта? Просто перемещение каталога не работает. Мерзавец думает, что все файлы были удалены.
Probably the simplest thing, unless you have already created some history you want to save, would be to just delete the .git
subdirectory and redo the init in the correct directory.
If you used git to solve the problem, any solution would necessarily leave behind a lot of "moved this file here" history entries that aren't actually changes, but you fixing a screwup at creation time. Better to just create it right.
Используйте git-mv
, чтобы переместить файлы «вверх» в нужное место, затем git-rm
«мой-новый-проект» каталог.
git filter-branch
позволяет вам переписывать историю таким образом. На странице руководства git filter-branch
даже есть ваш случай в качестве примера :
Чтобы переписать репозиторий так, чтобы он выглядел так, как будто foodir / был корнем его проекта, и отменить всю остальную историю:
git filter-branch --subdirectory-filter foodir - --all
Вероятно, вы захотите git clone
репозитория в новый подкаталог до (или после?) Запуска git filter-branch
. (Клонирование до filter-branch и запуск filter-branch на новом клоне даст преимущество, если оставить исходный каталог .git /
на месте в качестве резервной копии на случай, если что-то пойдет не так.)
У меня была противоположная проблема - мне пришлось перенести корень git в родительский каталог (из проекта / src в проект) К моему крайнему удивлению, сработало следующее !!
src$ mv .git ../
src$ cd ..
project$ git add src
project$ git commit -a
git ловко обнаружил, что все новые файлы были переименованы в версии старых, и история не была потеряна
Вы можете попробовать что-то подобное ... переместите папку .git и снова добавьте файлы перед фиксацией