Есть хорошая книга для Git под названием Pro Git. Также есть раздел о том, как перейти с пользовательской структуры. (См. Пользовательский импортер). Это немного сложнее, но если у вас много истории, то это будет лучшим способом.
Другой способ это сделать:
# initialize a new repository
git init .
touch .gitignore
git add .
git commit -m "initial commit"
# copy all the files to working directory
cp -R backup_v01/* .
# stage all the files
git add .
# make the first commit
git commit -m "v0.1 from backup"
# remove all files
git rm -r *
# copy all the files to working directory
cp -R backup_v02/* .
git add .
git commit -m "v0.2 from backup"
Это можно оптимизировать, но этот сценарий можно легко понять. Вы должны удалить все старые файлы из хранилища перед обновлением содержимого, потому что в противном случае у вас будут висеть старые удаленные файлы.
Конечно, все это можно превратить в скрипт (repo.sh):
#!/bin/bash
REPODIR=$1
# initialize a new repository
git init $REPODIR
cd $REPODIR
touch .gitignore
git add .
git commit -m "initial commit"
while read DIR
do
# remove all files
git rm -r *
# copy all the files to working directory
cd ..
cp -R $DIR/* $REPODIR/.
# go back to repo dir
cd $REPODIR
# stage all the files
git add .
# make the first commit
git commit -m "$DIR from backup"
done
Переключение папки необходимо, чтобы она работала с относительными путями.
Вы используете его, отправляя все пути к папкам в сценарий и указывая каталог хранилища (он не должен существовать):
# let's say all the backups are in this folder
# and there are no other folders
# test whether everything is in correct order
ls -d */ | sort
# verify that there is no repository directory
rm -rf REPO_DIR
# pipe the folder listing to the script
ls -d */ | sort | repo.sh REPO_DIR