기존에 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 등록)
'학습 > Git' 카테고리의 다른 글
git 원격 브랜치 한번에 로컬로 받아오기(+로컬 브랜치 삭제) (0) | 2024.01.11 |
---|---|
커밋 메세지 본문은 "어떻게"보다 "무엇을", "왜"에 맞춰 작성하기 (3) | 2022.09.08 |
GitHub Flow vs Git Flow (0) | 2022.09.07 |
Git Flow 사용해보기 (0) | 2022.02.06 |