Есть два подхода к этому. Там, где это возможно, я бы начал с чистой папки для вашего нового рабочего каталога git, а затем скопировал вашу версию вещей позже. Это может выглядеть примерно так: *
mv $dir $dir.orig
git clone $url $dir
rsync -av --delete --exclude '.git' $dir.orig/ $dir/
rm -rf $dir.orig
На этом этапе у вас должна быть довольно чистая рабочая копия с вашей предыдущей рабочей папкой в качестве текущего рабочего каталога, поэтому любые изменения, включая удаление файлов, будут отображаться на радаре, если вы запустите git status.
С другой стороны, если вам действительно нужно сделать это наоборот, вы можете получить тот же результат с помощью чего-то вроде этого:
cd $dir
git clone --no-checkout $url tempdir
mv tempdir/.git .
rmdir tempdir
git reset --mixed HEAD
В любом случае, первое, что я хотел бы сделать, это запустить что-то вроде git stashполучения копии всех ваших локальных изменений, отложенных в сторону, затем вы можете повторно применить их и определить, какие из них вы хотите зафиксировать.
* В обоих примерах предполагается, что вы начинаете с оболочки в родительском каталоге вашего проекта.