Git repository mirror, fetch

jongeun·2022년 12월 23일
0

Github 저장소 Mirror

Git 원격 저장소를 다른 Git 원격 저장소로 커밋 로그를 포함해 온전히 옮길 때 사용

1. 깃허브 새로운 저장소 생성

2번 개발자는 새로운 저장소를 생성합니다.

2. 1번 개발자 저장소 clone

2번 개발자는 1번 개발자의 저장소를 clone 합니다.
👉 "기존 Repository".git 폴더 생성됨.

git clone --mirror {1번 개발자 페어 프로그래밍 저장소 주소}
cd {1번개발자의저장소이름}.git

3. 복사한 저장소의 원격 저장소 설정

2번 개발자는 새롭게 생성한 원격 저장소를 복사해온 프로젝트의 원격 저장소로 설정합니다.

git remote set-url --push origin {2번 개발자의 새롭게 생성한 저장소 주소}

4. push

2번 개발자는 프로젝트를 Push 합니다.

git push --mirror

⚠️ 알게 된 주의사항

  1. 미러 클론하는 경우, .git 폴더가 생성되며, 해당 폴더는 코드가 들어있지 않음

    새 원격 레포를 클론 받은 후, 그곳에서 이어서 작업해야함

  2. .git 폴더에서 복사한 저장소의 원격 저장소 설정을 하지 않고, 기존 클론 받은 폴더(작업 시작 시, 1번 개발자의 원격저장소 클론 받은 폴더)에서 새롭게 생성한 원격 저장소 주소를 설정하는 경우, fetch는 1번개발자의 원격저장소로 되어있음

    git pull origin master, git fetch경우 1번개발자 저장소의 최신데이터로 가져오게 됨
    그렇기 때문에 .git으로 접속하여 원격저장소를 set해주는 것이 편리함.

pull 원하는 경우, git pull 후 커밋 해야 2번 개발자 저장소에 반영 됨

  1. git push --mirror 하는 경우, remote rejected 오류가 뜨는 경우가 있으나, 정상적으로 새 저장소에 미러는 됨.

    그럴 경우, 아래 방법으로 진행하면 오류가 뜨지 않음

# git mirror 명령어

cd 작업할위치로이동
git clone --bare 기존원격레포주소
cd 기존원격레포이름.git
git remote set-url --push origin 새원격레포주소
git push --mirror

🧐 fetch 기능?

pull과 다르게 원격저장소의 커밋을 로컬 저장소로 가져옴
로컬 저장소는 원래 가지고 있던 로컬 저장소의 최근 커밋 위치를 가리키고, 원격저장소는 가져온 최근 커밋을 가리킴

1. 원격 저장소에서 수정 된 내용을 확인할 수 있음

git fetch origin
git branch -r # fetch를 확인할 수 있는 브랜치 내역들이 나옴(화살표 확인)

git checkout origin/master # 브랜치 접속

브랜치 접속 후 변경 된 파일을 열어보면 원격저장소에서 수정한 내용이 추가되어있음.
fetch로 가져온 내용은 로컬 디렉토리에 저장되지는 않고 브랜치로 checkout하여 변경 된 내용들을 확인만 하는 것.

2. git log 로 원격 저장소 commit 내역 확인

✔️ 참고: log 확인 후 나가고 싶을 때 q 클릭

profile
기록으로 성장하는 개발자 되기

0개의 댓글