개인 프로젝트라면 그냥 프로젝트를 복사해서 Git으로 올려도 되지만.. History, Branch 등의 관리를 위해 마이그레이션 하는 것을 권장한다.
Git이 설치된 환경에서 PowerShell을 관리자 권한으로 실행하여 진행한 내용입니다.
git svn --version
- 위 명령어가 정상 출력되면 git-svn 플러그인이 설치된 것이다.
- 설치되어 있지 않다면 Git을 재설치하거나 https://git-scm.com 에서 설치 확인
🛠️ 1. SVN → Git 변환 (로컬 저장소 생성)
git svn clone http://svn.example.com/project --stdlayout --authors-file=authors.txt my-git-project
옵션 설명
- --stdlayout: SVN의 표준 디렉터리 구조(trunk, branches, tags)를 사용하는 경우
- --authors-file: 유저 매핑 파일 사용 (아래 내용 참고)
- my-git-project: Git 저장소로 변환할 디렉터리 이름
⚠️ 주의사항
- 변환 시 모든 커밋 히스토리를 가져오기 때문에 시간이 오래 걸릴 수 있다.
- 과정 중에 SVN 사용자 계정을 입력하라는 메시지가 나오면, 인증 정보 입력
- SVN 사용자 정보를 Git 커밋 작성자에 매핑하고 싶다면, 작성자 매핑 파일 사용
🔽 유저 매핑 파일 예시 (authors.txt)
svnuser1 = 홍길동 <hong@example.com>
svnuser2 = 김개발 <kim@example.com>
유저 매핑 파일 사용은 선택 사항이며, LDAP 기반 인증을 사용하는 경우 git svn이 자동으로 인식하여 매핑된다.
📁 2. 디렉터리 이동
cd my-git-project
위에서 로컬 저장소 생성 작업이 정상적으로 완료되었다면 현재 위치에 프로젝트 명으로 된 디렉터리가 생겼을 것이다.
다음 작업을 위해 프로젝트 디렉터리로 이동한다. (디렉터리/파일 목록 확인: ls)
☁️ 3. GitLab (GitHub) 원격 저장소 생성
GitLab 또는 GitHub에서 마이그레이션을 진행할 새 프로젝트(빈 저장소)를 생성한다.
(Push 시 충돌 발생할 수 있으니 README, .gitignore는 생성하지 않는 것이 좋다)
🔗 4. GitLab 원격 저장소 연결
새로 생성한 원격 저장소 주소를 복사하여 현재 로컬 Git 저장소에 원격 저장소를 등록한다.
git remote add origin http://127.0.0.1:8888/yourname/my-git-project.git
🌿 5. 원격 브랜치를 로컬 브랜치로 전환
git svn으로 클론하면 브랜치가 remotes/ 아래에 생성된다.
git branch -r # 원격 브랜치 목록 확인
지금까지는 아직 Git 브랜치가 아니고 Svn 브랜치를 Git이 내부적으로 참조하는 형태이다. Git에서 브랜치로 인식하게 하려면 로컬 브랜치로 전환 해줘야 한다.
git branch master remotes/trunk
git branch -r 명령어로 확인한 remotes 브랜치들을 하나씩 Git 로컬 브랜치로 전환해야 한다.
🚀 6. GitLab에 전체 푸시
이제 Git의 로컬 브랜치로 인식되었으니 원격 저장소로 PUSH 할 수 있다.
git push -u origin --all # 모든 브랜치 푸시
git push origin --tags # 모든 태그 푸시
❓ tags는 무엇인가
- Svn의 tags 디렉터리도 Git에서는 태그(Release 지점) 로 전환된다.
- 해당 태그 정보를 GitLab에도 반영하려면 명시적으로 푸시해야 한다.
728x90
'🛠️DevTools > Git' 카테고리의 다른 글
[Git] 다중 브랜치 관리 및 동시 작업 (with. worktree) (0) | 2025.03.18 |
---|---|
[Git] 특정 커밋 Merge 하기 (cherry-pick) (4) | 2025.01.20 |
[Git] .gitignore 사용법 (0) | 2023.08.27 |
[Git] Git 명령어 (0) | 2023.08.27 |
[Git] Fork. Repository변경사항 업데이트 (0) | 2023.08.27 |