forDevLife
[Git] 다른 repository로 프로젝트(브랜치) 옮기기 본문
목표
- change_remote_1(내가 작업한 프로젝트)를 change_remote_2(초기화 된 프로젝트 - 기본 파일만 존재)로 원격 저장소를 변경!
- change_remote_1의 기존 커밋에 change_remote_2의 커밋을 올려서 통합하기
현재 상태
- remote_1 : first ~ third commit 존재
- remote_2 : first commit 존재
- 동일하게 README.md 파일 존재
1. remote_1와 연결되어 있는 로컬저장소 연결 끊기 & 재연결 테스트
- git remote remove origin : local과 remote 저장소 연결 끊기
- git remote add origin ~ : ~ remote 저장소와 연결하기
- 재연결 하게되면 이후 push할 때 최초 1회 git push -u origin (로컬 브랜치 명) 필요
- remote_1 대상으로 'change_remote_test' 로컬에서 commit 3회 진행(first ~ third)
2. 두 번째 로컬 생성 및 remote_2와 새로운 연결
- first commit만 수행
- remote_2와 연결 끊기(첫 번째 로컬과 remote_2와 연결하는게 목표이므로!)
3. 첫 번째 로컬 - remote_1 간 연결 끊고, remote_2와 연결
- 첫 번째 로컬과 remote_2를 연결한다.
- git remote update origin --prune을 통해 유효하지 않은 branch를 제거한다 -> 필요하는지는 모르겠다.
4. git pull로 remote_2 정보 가져오기
- git pull origin main --allow-unrelated-histories를 통해 현재 브랜치와 관련없는 history를 가져오게 된다.
- 이 때 README.md가 두 remote간 당연히 다를 것이다.
- auto-merging 중 충돌되는 부분이 표시된 README.md가 생성된다.
- 상태는 노란색으로 표시된다.
5. conflict 해결 후 커밋
- README가 적당히 수정되었다면 다시 커밋을 한다.
- 그리고 git push -u origin main을 통해 remote_2로 반영한다.
6. 결과
- 아래 3개 : remote_1에서의 커밋
- 1881 : remote_2에서의 커밋
- 961e : conflict 해결 커밋
7. 왜 이걸 했는지?
우테코 과제 중 임시 과제에서 fork를 수행하고 branch를 만들었기 때문에, pull request하기로 되어있는 repository로 브랜치를 옮겨야 했다. 커밋 메시지를 그대로 옮기기 위해서 알아봤다.
1. 위와 같이 할 필요 없이, 우선 새로운 과제 제출 repository에서 fork를 했다.
2. 현재 내가 수행한 과제의 remote 저장소를 끊는다.
3. 새로운 repository의 remote에 연결한다. 내 branch name은 새로운 repository에 없을 것이기 때문에, 그냥 연결해서 push하면 되겠다고 생각했다.
4. 하지만 새로운 repository와 기존 repository의 commit이 왜 때문인지 달랐다... 그래서 pull request가 되지 않았다.
- 새로운 repository의 main에는 아래와 같은 94764a7 커밋이 기본적으로 존재했다.
- 내가 처음 실습용으로 받은 프로젝트의 첫번째 커밋은 39a27bc였다.
- 따라서 base가 달라 합칠 수 없다는 의미이다.
5. 따라서 git rebase를 통해 문제를 해결했다.
- 내가 수행한 과제의 첫번째 커밋을, 새로운 repository의 커밋 다음으로 rebase를 진행한다.
- 이 과정에 계속 conflict가 발생한다. 커밋마다 파일 내용이 변경되기 때문에 어쩔 수 없다.
결국 위와 같이 합쳤다!!!
'Etc' 카테고리의 다른 글
2021년 회고 - 앞으로의 계획 (3) | 2022.01.01 |
---|---|
[Git, GitHub] 입문 (0) | 2021.12.03 |
resource 내의 파일 업로드 방법(file -> MultipartFile) (0) | 2021.09.29 |
[git] github push 되돌리기 (0) | 2021.09.03 |
[git] git add 취소하기, git commit 취소하기, git push 취소하기 (0) | 2021.08.10 |
Comments