개인 프로젝트 소스를 private repository 에 중요한 데이터까지 전부 push 해서 관리 중입니다. 요즘은 개발자 입사 지원 시 git 에 포트폴리오 소스코드를 공개하는 것 같아서 방법을 고민해 보았습니다.
1. private repository → public repository
가장 간편한 방법.
→ 중요 소스코드들이 포함되어 있기 때문에 이 방법은 배제하였습니다.
2. git Submodule
git 레포지토리 하위에 다른 저장소를 관리하기 위한 도구
상위 repository 는 슈퍼 프로젝트(superproject), 하위 repository 는 서브 모듈(submodule)
서브모듈을 사용하면 특정한 git 레포지토리를 다른 레포지토리의 하위 디렉토리로 사용할 수 있다.
→ 상위 repository public, 하위 repository private 으로 관리
여러명이 같이 사용하는 repository 라면 적용하기 괜찮아 보임
각각의 repository 가 따로 관리되기 때문에 서브 모듈(submodule) 쪽 소스가 수정되었을 경우 관리하기 까다로움
그러나 저는 개인 프로젝트를 혼자 개발하기 때문에 편하게 내가 수정한 소스 push 하고 싶어서 이 방법은 배제하였습니다.
3. 공개용 git 계정 생성 → repository import → 중요 소스코드 file 및 history 를 전부 삭제
기존 git 계정은 개발용도로 편하게 사용하고 공개용으로 계정을 새로 생성해서 기존 계정의 repository 를 import 하고 중요 소스코드 file 및 history 를 전부 삭제하는 방법
→ 저한테 가장 알맞은 방법이라고 생각해서 이 방법을 선택했습니다.
공개용 계정에 import 한 시점 이후 변경된 소스는 반영이 되지 않는 단점이 있지만 저는 공개보다는 편하게 개발 관리하는게 우선이기 때문에 필요할 때 공개용 계정에 새로 import 한다는 생각으로 관리하기로 했습니다.
※ 3번 방법을 windows 환경, gitlab.com 기준으로 진행하였습니다.
- Python 설치 (이미 설치되어 있으면 Skip)
1. Python 최신 버전 다운로드 후 설치
https://www.python.org/downloads/
2. 환경변수 설정 후 콘솔에서 버전 확인
python --version 또는 python3 --version
- git-filter-repo 설치
1. GitHub에서 git-filter-repo 복제
git clone https://github.com/newren/git-filter-repo.git
2. git --exec-path 실행하여 Git 디렉터리 확인
git --exec-path
3. git-filter-repo 파일을 Git 디렉터리로 복사
4. git filter-repo 실행 -> No arguments specified. 문구 나오면 정상
git filter-repo
* 정상 문구 안나올 경우 -> git-filter-repo 열기 -> python3 를 python 으로 수정
- 공개용 계정으로 gitlab.com 로그인 -> Projects 메뉴 -> new project 버튼 클릭
- import project 클릭
- repository by URL 클릭
- import 할 git url, 계정, 비번 등 필요한 항목 입력 후 Create project 버튼 클릭
- cmd 실행 후 clone 할 경로 이동
- clone
git clone https://gitlab.com/jinmanp/manman_frontend.git
- filter-repo 로 repository file history 전부 삭제
1. 해당 repository 최상위 폴더로 이동
cd manman_frontend
2. 삭제 명령 실행
git filter-repo --force --invert-paths --path 삭제하고 싶은 폴더 및 파일
git filter-repo --force --invert-paths --path src/main/resources
3. repository 재연결
삭제 명령을 실행하면 repository 연결이 끊어진다. repository 다시 연결
git remote add [remote name] [git URL]
git remote add origin https://gitlab.com/jinmanp/manman_frontend.git
4. repository push
git push [remote name] --force --all
git push origin --force --all
5. 삭제 전 삭제 후 repository 비교
※ pre-receive hook declined 오류 발생 시
※ remote: You are not allowed to push code to this project. 오류 발생 시
Protected branches 설정 해제 또는 Allowed to force push 허용
'tech' 카테고리의 다른 글
[펌]오픈소스 라이센스별 차이(GPL,AGPL,MPL등등등...) (0) | 2018.09.14 |
---|---|
프로그래밍 교육 사이트 모음 (0) | 2018.09.14 |
[펌] 어떻게 공부할까? 프로그래머를 위한 공부론 (0) | 2018.09.14 |