git 저장소에“수동으로 버전이 지정된”프로젝트 추가


1

버전 관리의 경이로움을 들기 전에 "프로젝트 x 1.0", "프로젝트 x 1.1", "프로젝트 x 1.2"등과 같은 폴더에 프로젝트를 보관했습니다.이 방법에는 수많은 중복 기능이 있으므로 git을 사용하여 향후 시스템을 통합하고 버전을 관리하고 싶습니다.

가장 좋은 방법은 무엇입니까? "project x 1.0"에서 git init을 실행하여 시작해야한다고 가정하지만 새 커밋으로 다른 폴더를 프로젝트에 통합하려면 어떻게해야합니까? (나는 여전히 자식에 매우 익숙하다)

답변:


4

새로운 빈 디렉토리를 만들고로 repo를 만들고 파일이나 무언가 git init로 첫 번째 커밋을 시작합니다 .gitignore.

그런 다음이 새 디렉토리에 귀하의 첫 번째 버전에서 모든 파일을 복사 git add하고 git commit. 이것은 당신에게 첫 번째 진정한 커밋을 줄 것입니다.

그런 다음 두 번째 개정판의 내용으로 모든 파일을 복사 / 덮어 씁니다. git add, git commit.

원하는만큼 반복 할 수 있습니다. 첫 번째 단계는 실제로 필요하지 않습니다. 첫 번째 개정판 디렉토리에서 수행 할 수 있습니다. 그러나 새 디렉토리에서 그렇게하면 백업에서 전혀 변경하지 않아도되므로 프로세스를 개선 / 조정하려는 경우 이전 디렉토리에서 아무것도 손실하지 않고 처음부터 다시 시작할 수 있습니다.


3

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

2

또 다른 방법은 init첫 번째 프로젝트 버전을 시작하고 커밋 한 후 저장소 디렉토리를 1.0 복사본에서 1.1 복사본으로 이동 하고 .git변경 사항을 추가하고 ( git add --all삭제를 알리는 데 사용) 커밋 한 다음 1.2로 이동하는 것입니다. .

이것은 Git이 .git디렉토리 외부의 저장소 상태에 대한 정보를 유지하지 않기 때문에 작동하므로 .git파일을 바꾸는 대신 이동 하는 것을 신경 쓰지 않습니다 . 그러나 예를 들어 무시하려는 .gitignore파일이있는 경우 각 프로젝트 버전에 개별적으로 무시 파일을 추가해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.