git clone --mirror로 레포지토리 백업하기

cjkangme·5일 전
0

TIL

목록 보기
36/36
post-thumbnail

mirror 옵션

git clone --mirror는 원본 저장소를 통채로 복사하기 위해 사용하는 옵션입니다.
일반적으로 저장소의 백업을 생성하거나, 저장소를 통째로 이전/복제하기 위해 사용합니다.

git clone--mirror
복사 대상default branch모든 branches, tags
저장소 유형non-barebare
git fetch 동작
(branch)
원격에서 삭제되어도
로컬에서는 삭제 X
원격에서 삭제되면
로컬에서도 삭제

여기서 non-bare는 .git 디렉토리와 모든 작업 디렉토리를 포함한 저장소이고, bare는 .git 디렉토리만 포함된 저장소입니다.
즉 bare 저장소 상태에서는 개발 작업을 하거나 push/pull을 할 수 없습니다.

mirror 파일 예시 위 사진처럼 git clone --mirror로 복제된 저장소에는 .git 디렉토리에 해당하는 파일만 있는 것을 확인할 수 있습니다.

clone mirror 예시

git clone --mirror [REPO_URL]
cd [REPO_NAME].git
git lfs fetch --all

git lfs fetch --all은 저장소에 100MB가 넘는 lfs 파일이 있을 때, 이를 반영하여 clone하기 위해 사용합니다.

mirror push

git push --mirror를 통해 bare 저장소를 non-bare 저장소로 원격 저장소에 push 할 수 있습니다.

이 때, push가 되는 원격 저장소는 clone을 해온 저장소이므로 필요에 따라 먼저 원격 저장소의 주소를 변경해주어야 합니다.

git remote set-url --push origin [NEW_REPO_URL]
git push --mirror

로컬에서 사용하기

때로는 새로운 원격 저장소에 push하는 대신 로컬에서 작업을 해야할수도 있습니다.

이 경우에는 작업 디렉토리를 따로 생성한 뒤, 여기에 clone을 하면 됩니다.

# 현재 [REPO_NAME].git 디렉토리에 있다고 가정
mkdir ../[REPO_NAME]
git clone . ../[REPO_NAME]
cd ../[REPO_NAME]

bare에서 non-bare 변환 이렇게 워킹 디렉토리를 포함한 non-bare 저장소로 clone 되었음을 확인할 수 있습니다.

0개의 댓글