Есть два подхода к этому. Там, где это возможно, я бы начал с чистой папки для вашего нового рабочего каталога 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
, чтобы получить копию всех ваших локальных изменений, отложенных в сторону, затем вы можете повторно применить их и работать с теми, которые вы хотите зафиксировать.
* В обоих примерах предполагается, что вы запускаете оболочку в родительском каталоге вашего проекта.