답변:
새로운 빈 디렉토리를 만들고로 repo를 만들고 파일이나 무언가 git init
로 첫 번째 커밋을 시작합니다 .gitignore
.
그런 다음이 새 디렉토리에 귀하의 첫 번째 버전에서 모든 파일을 복사 git add
하고 git commit
. 이것은 당신에게 첫 번째 진정한 커밋을 줄 것입니다.
그런 다음 두 번째 개정판의 내용으로 모든 파일을 복사 / 덮어 씁니다. git add
, git commit
.
원하는만큼 반복 할 수 있습니다. 첫 번째 단계는 실제로 필요하지 않습니다. 첫 번째 개정판 디렉토리에서 수행 할 수 있습니다. 그러나 새 디렉토리에서 그렇게하면 백업에서 전혀 변경하지 않아도되므로 프로세스를 개선 / 조정하려는 경우 이전 디렉토리에서 아무것도 손실하지 않고 처음부터 다시 시작할 수 있습니다.
Pro Git이라는 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
또 다른 방법은 init
첫 번째 프로젝트 버전을 시작하고 커밋 한 후 저장소 디렉토리를 1.0 복사본에서 1.1 복사본으로 이동 하고 .git
변경 사항을 추가하고 ( git add --all
삭제를 알리는 데 사용) 커밋 한 다음 1.2로 이동하는 것입니다. .
이것은 Git이 .git
디렉토리 외부의 저장소 상태에 대한 정보를 유지하지 않기 때문에 작동하므로 .git
파일을 바꾸는 대신 이동 하는 것을 신경 쓰지 않습니다 . 그러나 예를 들어 무시하려는 .gitignore
파일이있는 경우 각 프로젝트 버전에 개별적으로 무시 파일을 추가해야합니다.