본문 바로가기
학습/Git

fork 해서 저장소 관리하기

코동이 2021. 10. 3.

기존에 Repository를 Fork해서 열심히 pull request를 날리고 관리했는데 노트북 SSD가 맛이가서 새로 교체하느라 놋북 내용이 초기화됐다. ㅜ 그래서 이전의 내용들을 다시 노트북에 저장하면서 fork Repository를 다시 공부하게 되었다.

 

기존에 Repository를 fork받는 방법은 다음과 같다. git clone 대신에 수동으로 저장소를 등록하고 내용을 가져온다.

(clone = fetch + merge)

 

 

1. 로컬에 원격 git 주소 등록하기

 

git init

git remote add upstream <회사 repository>

git remote add origin <fork한 나의 repository>

 

2. upstream 있는 파일들 내려받기

git fetch upstream

단순하게 upstream 파일들을 가져온 상태. 아직 파일들이 반영된 상태가 아니다

 

 

3. 파일들의 최신 상태 반영하기

git rebase upstream/main

git merge를 사용할 수도 있으나, 좀 더 깔끔한 이력관리를 위해 rebase를 사용한다. (팀문화 차이)

 

 

4. 나만의 작업 branch 만들기

git switch -c <사용 할 branch이름> upstream/main

git switch -c로 새로운 branch를 생성하면, 현재 나의 branch의 코드 내용이 고대로 새로운 branch로 복사가 된다. 따라서 upstream/main은 원격의 upstream 저장소의 main branch를 고대로 가져오겠다는 의미이다. 특정 branch의 코드를 가져오고 싶다면, main이 아닌 다른 branch를 적을 수 있다.

 

5. 작업하기

git add .

git commit

git push origin <내가 만든 branch이름>

원격 저장소에 Pull Request를 날리면 상식적으로 git push upstream이 맞다고 생각이 들지만, git push origin을 해야 정상적으로 Pull Request를 날린다. 또한 origin 다음에 내가 여러개의 branch를 가지고 있으면 하나를 선택해야 하기 때문에, username이 아닌 <내가 만든 branch이름>을 적는다.

 

 

6. Pull Request 날리기

내가 fork한 Repository에 가면 Pull Request 버튼이 떠있으므로 클릭하고 들어가서 Pull Request를 날린다.

 

 

 

여기까지가, 외부 Repository를 Fork해서 Pull Request를 날리는 과정이다. 나는 이미 Fork를 다 했었고, 나만의 branch를 가지고 있었기에 다시 노트북에 환경을 만들고 싶었다. 여러가지 시행착오 끝에 어디에 어떤 코드를 추가해야하는지 다시 한번 정리한다.

 

 

2. upstream 있는 파일들 내려받기

 

git fetch upstream

git fetch origin

2번에서 git fetch upstream 뒤에 git fetch origin을 추가한다. 그래야 내가 여태까지 작업했던 branch 파일들을 정상적으로 다운로드 받을 수 있다. 처음 Fork할 때는 내 origin 저장소에는 아무런 코드가 없는것이 당연하기 때문에 git fetch origin은 필요없다. 

 

(Fork != 원격 저장소 branch 등록)

반응형