얼렁뚱땅 스며드는 Data Science

소소한 오류들

[Git] 원격저장소 변경사항 반영 후 commit push : rebase

Jesip14 2024. 4. 30. 15:01

회사 깃랩에 신입사원 수습 레포지토리에 업무하면서 소소한 기록을 했었는데

새로운 레포지토리로 옮기기 위해 작업을 하다 막힌 부분이 있어 정리를 하게 됐다.

 

 


원래 기존 레포지토리를 복사해서 새로운 리포지토리에 넣는 방법은 --mirror 옵션을 넣어주는 방식이다.

  1. 새로운 저장소가 될 디렉토리에서 git clone --mirror를 넣어준다
git clone --mirror {old_repo_url}
  1. 해당 디렉토리 하위로 생긴 old_proj_name.git 로 이동한 뒤, remote push url 변경
cd {old_proj_name}.git 

git remote set-url --push origin {new_repo_url}
  1. --mirror 옵션 추가 후 push
git push --mirror

하지만 아래와 같은 에러가 뜨면서 복사를 할 수가 없고, 선배님이 만들어주신 레포라 세팅 건들기가 조금 그래서 그냥 안에 폴더만 복사해서 새로운 레포지토리에 push를 하기로 했다.

 


그래서 진짜 본론!

사용할 디렉토리에 git init을 하고, remote 설정하고 폴더들 복사하고 변경사항을 커밋한 내용 push했더니 바로 에러뜸 ;;

뭐 쨋던 원인은 처음 레포지토리 만들면서 생성된 readme 파일을 pull을 안해서 그런거였음

나는 변경사항 커밋을 원격저장소 내용을 반영한 후 하려고 했으니까 rebase방식으로 pull해오고 난 뒤 커밋사항 push해야함

 

Rebase 

원격저장소의 head가 로컬저장소보다 앞에 있을 때,
rebase 방식은 원격의 내용을 로컬에 반영하고 그 다음 로컬의 변경사항을 원격으로 push 

 

1. rebase 로 pull

git pull --rebase

2. 기존대로 push

git push origin main

 

만약, head가 앞선 원격저장소의 내용과 로컬의 변경사항을 merge한 후, 새로운 커밋을 생성하여 push하기 위해서는 `--no-rebase` 옵션을 줘서 pull하면 된다!

 


앞으로 동일한 문제가 생기면 이렇게 해결해야지 

다시볼지는 모르겠지만 ㅋ

 

 

참고한 글

 

기존 Git Repository를 복사하여 새로운 Repository 만들기

보통 Git Repository를 복사할 때 fork를 많이 사용한다. fork는 사실상 clone과 큰 차이가 없지만, github.com 내에서 바로 검색이 되진 않는다. fork의 원래 의도는 bugfix를 위해 기존 repository를 복사하여, 코

projooni.tistory.com

 

 

[Git, Github] git push, pull, merge, rebase

원격 저장소에서 git push, git pull, merge, rebase

velog.io