문제 정의
- 기존에 특정 조직 또는 그룹의 일원으로 활동하던 레파지토리를 개인 계정으로 옮겨야 하는 상황
- 이 때 기존 레파지토리의 모든 커밋 히스토리와 기록을 새로운 개인 레파지토리로 옮겨야 한다.
- 하지만 이 작업을 수행할 때 발생할 수 있는 문제?
접근 권한: 기존 레파지토리는 특정 조직 또는 그룹의 소유이므로, 개인 계정으로 옮길 때 새로운 레파지토리에 대한 쓰기 권한이 필요
커밋 히스토리 손실: 레파지토리를 단순히 복사하여 옮기는 것이 아니라, 모든 커밋 히스토리와 기록을 옮겨야 한다. 이 작업을 실수로 인해 일부 커밋이 손실될 수 있다.
원격 레파지토리 관리: 옮겨진 레파지토리가 새로운 개인 계정으로 옮겨졌다고 해도, 기존 조직 또는 그룹의 원격 저장소와 연결되어 있을 수 있다.
해결 방법
1. 권한 획득
- 레파지토리를 소유한 조직 또는 그룹의 관리자에게 옮기려는 레파지토리에 대한 쓰기 권한을 요청한다.
2. 레파지토리 클론 및 원격 레파지토리 추가
- 새로운 개인 레파지토리를 생성하고, 기존 레파지토리를 클론하여 로컬 환경으로 가져온다.
- "New repository" 버튼을 클릭하여 새 레파지토리를 생성한다.
- 그런 다음, 새로운 개인 레파지토리에 원격 저장소를 추가하고, 새로 생성한 레파지토리의 URL을 복사하여 기존 레파지토리와 새로운 레파지토리를 연결한다.
git clone <기존 레파지토리 URL>
git remote add personal <새로운 레파지토리 URL>
3. 커밋 히스토리 이전
- git push --mirror 명령을 사용하여 모든 브랜치, 커밋 및 태그를 새로운 개인 레파지토리로 옮긴다.
- 이 명령은 모든 내용을 완벽하게 복제하므로, 모든 커밋 히스토리와 기록이 옮겨질 수 있다.
git push --mirror personal
4. 옮기기 확인
- 새로운 레파지토리 페이지로 이동하여 모든 내용이 정상적으로 이전되었는지 확인한다.
- 커밋 히스토리, 브랜치, 태그 등이 새로운 레파지토리에 있는지 확인하고 필요에 따라 수정 또는 추가 작업을 수행한다.
'기타' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2024.04.22 |
---|---|
PM 업무의 이해 : 클라우드 컴퓨팅 및 인프라스트럭처 관리 (1) | 2024.04.18 |
unable to merge unrelated histories in this repository (1) | 2024.04.07 |
개발 협업이란? (0) | 2024.03.29 |
Github : 팀원의 커밋을 실수로 삭제한 경우 (0) | 2024.03.28 |
문제 정의
- 기존에 특정 조직 또는 그룹의 일원으로 활동하던 레파지토리를 개인 계정으로 옮겨야 하는 상황
- 이 때 기존 레파지토리의 모든 커밋 히스토리와 기록을 새로운 개인 레파지토리로 옮겨야 한다.
- 하지만 이 작업을 수행할 때 발생할 수 있는 문제?
접근 권한: 기존 레파지토리는 특정 조직 또는 그룹의 소유이므로, 개인 계정으로 옮길 때 새로운 레파지토리에 대한 쓰기 권한이 필요
커밋 히스토리 손실: 레파지토리를 단순히 복사하여 옮기는 것이 아니라, 모든 커밋 히스토리와 기록을 옮겨야 한다. 이 작업을 실수로 인해 일부 커밋이 손실될 수 있다.
원격 레파지토리 관리: 옮겨진 레파지토리가 새로운 개인 계정으로 옮겨졌다고 해도, 기존 조직 또는 그룹의 원격 저장소와 연결되어 있을 수 있다.
해결 방법
1. 권한 획득
- 레파지토리를 소유한 조직 또는 그룹의 관리자에게 옮기려는 레파지토리에 대한 쓰기 권한을 요청한다.
2. 레파지토리 클론 및 원격 레파지토리 추가
- 새로운 개인 레파지토리를 생성하고, 기존 레파지토리를 클론하여 로컬 환경으로 가져온다.
- "New repository" 버튼을 클릭하여 새 레파지토리를 생성한다.
- 그런 다음, 새로운 개인 레파지토리에 원격 저장소를 추가하고, 새로 생성한 레파지토리의 URL을 복사하여 기존 레파지토리와 새로운 레파지토리를 연결한다.
git clone <기존 레파지토리 URL>
git remote add personal <새로운 레파지토리 URL>
3. 커밋 히스토리 이전
- git push --mirror 명령을 사용하여 모든 브랜치, 커밋 및 태그를 새로운 개인 레파지토리로 옮긴다.
- 이 명령은 모든 내용을 완벽하게 복제하므로, 모든 커밋 히스토리와 기록이 옮겨질 수 있다.
git push --mirror personal
4. 옮기기 확인
- 새로운 레파지토리 페이지로 이동하여 모든 내용이 정상적으로 이전되었는지 확인한다.
- 커밋 히스토리, 브랜치, 태그 등이 새로운 레파지토리에 있는지 확인하고 필요에 따라 수정 또는 추가 작업을 수행한다.
'기타' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2024.04.22 |
---|---|
PM 업무의 이해 : 클라우드 컴퓨팅 및 인프라스트럭처 관리 (1) | 2024.04.18 |
unable to merge unrelated histories in this repository (1) | 2024.04.07 |
개발 협업이란? (0) | 2024.03.29 |
Github : 팀원의 커밋을 실수로 삭제한 경우 (0) | 2024.03.28 |