fork된 repo는 원본 repo가 업데이트되면
자동으로 업데이트 될 줄알았지만,,
git으로 수동으로 업데이트된 내역을 업데이트 해줘야 한다.
github) 원본 repo와 fork된 repo는 독립관계
fork 된 repository를 업데이트 하기
원본 repository 등록
pwd
# /Users/dong_uk_kim/Desktop/UMC_dongNe/dongne-server
# fork repo를 git clone한 디렉토리
$ git remote add upstream {원본 repository 주소}
원본 repository에서 최신 내역 가져오기
$ git fetch upstream
$ git fetch 명령으로 지정된 repository (upstream : 원본 repository)의 내역을 그대로 가져옴.
원본 repository에서 가져온 내역에서 새롭게 업데이트/ 가져올 branch를 정하기
$ git checkout {새롭게 업데이트/추가할 branch 명}
$ git checkout 명령은 브랜치 전환을 수행
이때 위에서 git fetch 명령으로 특정 repository가 할당받은 상태임.
원본 repository에서 가져온 내역을 지정한 branch에 병합하기 (fetch + merge = pull)
$ git merge upstream/{branch 명}
여기서 주의해야할 사항은
원본 repository에서 가져오고 저장한 건 local repository에서 수행되었음이다.
로컬에서 업데이트할 내역들을 정리하고 원격 repository에 push한다.
파일 덮어쓰기 에러는 다음 블로그를 보고 해결!
local repository에서 저장해둔 걸 fork repository에 push하기
$ git push origin {branch 명}
로컬 repository 내역을 원격 repository에 push
fork된 repository를 업데이트 정리
1) 원본 repository가 수정되어도 fork된 repository는 자동으로 수정되지 않는다.
-> git을 이용해 fork된 repository를 업데이트 해줘야 한다.
2) 원본 repository를 local repository에 가져오고
local repository에서 fork repository에 push한다.
3) 원본 repository를 가져올 때는
하나의 브랜치씩 가져온다. (github 사용설명서 ㅎㅎㅋㅋ 그냥 받아들이기)
원본 repository에 main, develop, test branch가 있다고 가정해보자.
fork된 repository에는 main branch가 있다고 가정해보자.
그럼, fork repository는 develop, test branch가 추가되어야 한다.
이럴 때는 develop branch를 업데이트 하고,
추가로 test branch를 업데이트 해야된다.
그러니, 모든 branch를 한번에 업데이트를 하지 않고, 하나씩 branch를 업데이트한다.
git은 저장소의 개념을 적극활용해서 분산관리를 용의하게 하고 있다.
따라서, git이 저장소를 분산관리하는 방식을 이해하고 받아들여 git을 잘 활용하는 사람이 되보자!
swagger 적용
npm i 실행
github에 민주님께서 swagger 관련 설정을 해둔 채
organization repository에 push를 해주셨다.
그래서 난, 위처럼 fork 된 repository를 원본 repository를 통해 업데이트해주고
로컬 저장소에 업데이트 된 내역을 pull 해주었다.
fetch + merge 해서 pull을 수행했지만...ㅋㅋ
vscode로 서버 API를 실행했다.
하지만, 이러한 에러가 발생했다.
swagger 모듈을 찾을 수 없다는 에러였다.
이 에러는 다음 명령을 터미널에 실행해 해결할 수 있었다.
$ npm i
즉, swagger에 대한 node 모듈이 설치가 되어있지 않아서
모듈을 찾을 수 없다는 에러가 발생한 것이었다.
그래서
npm -> node package manage가
package.json에서 필요한 모듈 목록을 보고 존재하지 않는 모듈을
찾아서 자동으로 설치해준 것이다.
에러를 겪은 이유에 대한 보충 설명
github에 공유된 것을 그대로
로컬 저장소에 pull해도
코드를 실행할 때 추가로 설정해줘야 되었던 이유는
gitignore에 의해 설명된다.
node_modules는 gitignore에 포함되기 때문이다.
이전에도 다뤘 듯이 gitignore에는 github에 push되지 않는 파일 리스트를 나열한 것이다.
그래서 공유된 github를 pull하고 실행할 때는 gitignore에 존재하는 파일들을 신경써서
추가적으로 환경셋팅을 해줘야 정상적으로 코드가 실행된다.
github에 push 하는 것들의 특징은 무엇일까?
- 이번 프로젝트를 진행하면서 깨닫기로 해보자 !! - github의 의미
저번에 정리했지만 gitignore에 대해 다시 설명해보면,
gitignore에 적힌 파일들은 프로젝트 코드 실행에 있어서 필수적인 파일들이지만,
민감한 정보 (DB_ID,Password) 나 로그기록 처럼 github에 굳이 추가할 필요가 없는 걸
넣는다.
새로운 걸 느낀 후 정리
이번 에러를 다시 살펴보면, 결국
에러 코드에 swagger 모듈에 대해서 찾을 수가 없어요 라고 알려주고 있었다.
그렇기에 이에 대한 모듈을 자동으로 설치해주는 npm i를 통해
모듈을 설치해 에러를 해결할 수 있었다.
따라서, 에러 코드의 의미를 파악하는 연습을 하자.
함축적이지만 그 안에는 에러를 해결할 수 있는 열쇠가 담겨있다는 사실을 의식하자 ㅋㅋ!!
'🌤 프로젝트 > UMC 2기: 동네' 카테고리의 다른 글
[팀 프로젝트] 프로젝트하면서 Git과 친해지기 - 3 (Git의 작동원리) (0) | 2022.08.03 |
---|---|
[팀 프로젝트] 프로젝트하면서 Git과 친해지기 - 2 (Git은 repository로 소통한다.) (0) | 2022.08.03 |
[팀 프로젝트] 동네 백엔드 대면 회의 - 2차 (API 목록 구성) (0) | 2022.07.31 |
[팀 프로젝트] 동네 백엔드 대면 회의 - 1차 (erd 설계) (0) | 2022.07.28 |
동네 5차 회의 (0) | 2022.07.26 |