일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dfs
- react
- class
- AWS
- typeORM
- mongoose
- 공룡게임
- Nest.js
- Queue
- nestjs
- GIT
- flask
- MySQL
- cookie
- Sequelize
- jest
- 게임
- MongoDB
- Dinosaur
- game
- JavaScript
- Express
- TypeScript
- Python
- OCR
- 자료구조
- 정렬
- nodejs
- Bull
- Today
- Total
포시코딩
3월1일 - git remote 다루기 (remote, upstream) 본문
개요
이번 프로젝트에서는 GitHub organization에 프로젝트를 만들고
각자 fork한 다음 fork한 프로젝트에서 브랜치를 만들어 개발 후
브랜치를 본인 repo로 push ->
organization의 원본 프로젝트(upstream)로 pr
이런 흐름으로 진행하기로 결정됐다.
이 과정에서 메모해놓으면 좋을 git 명령어들과 상황에 대해 정리해보고자 한다.
일단 GitHub상에서 직접 fork 해서 가져가는거랑
가져온 프로젝트를 git clone한 다음 브랜치 새로 만들어서 작업하는거 정돈 기본으로
알고 있다고 생각할거임. (모르면 바보)
upstream 등록
내가 fork해온 repo를 내 컴퓨터에 clone 했다면
upstream에 새 반영사항이 있을 때 최신화를 시켜야 한다.
여기서 두가지 방법이 있다.
GitHub 홈페이지 거치기
먼저 내 repo에서 Sync fork를 누른다.
그럼 upstream의 최신화된 정보와 sync가 된다.
이 상태로 git pull 을 땡기면 내 local도 최신화가 된다.
git remote 사용하기
위 방법처럼 직접 GitHub 들어가서 해줄 수 있지만
아예 git 명령어를 통해 마우스 커서 안움직이고 해결할 수도 있다.
git remote add upstream {원본git주소}
일단 먼저 원본 git 주소를 upstream이란 이름으로 등록한다. (다른 이름이어도 괜춘)
upstream으로 했다고 가정했다고 진행
git pull upstream {브랜치이름}
git pull upstream dev
이제 upstream이랑 연결이 되었고, 위 명령어는 upstream의 branch를 땡겨온다는 뜻이다.
git pull upstream dev를 하면 upstream의 dev 브랜치를
내 local로 땡겨올 것이다. 물론 브랜치 dev로 해놓고 땡기기!
dev를 upstream의 데이터로 최신화했다면 내 repo에도 최신화를 해주면 끝이다.
git push origin {브랜치이름}
git push origin dev
이게 아까 사진에서 sync fork 버튼을 누르는 행위와 같다.
이렇게 말로 풀어놓으니 더 번거로워 보이지만 익숙해지면
단 세줄로 내 브랜치를 upstream과 sync 시킬 수 있다.
다른 remote 가져오기(제 3의)
팀업하여 작업하면 종종 pr을 내가 리뷰해야 되는 상황이 생기는데
코드로만 보기보다 직접 가져와서 테스트하고 싶을 때가 생긴다.
그럴 땐 upstream의 코드를 가져온 것 처럼
상대방의 repo를 remote로 등록해 가져오면 되는데 그 방법에 대해 알아보자
git remote add {remote이름} {repo주소}
git fetch {remote이름}
git checkout -t {remote이름}/{브랜치이름}
이게 끝이다.
각 줄에 대해 설명하자면
- {repo주소}를 내 local에 {remote이름}으로 등록시키고
- git fetch를 통해 데이터를 가져온다.
- checkout -t를 통해 해당 remote의 브랜치를 만듦과 동시에 checkout 까지
이런 과정이 된다.
확인을 다 했으면 다시 위의 upstream의 데이터를 가져오는 명령어를 실행한 뒤
remote와 branch를 지워주면 된다.
정리
git쪽으론 웬만큼 다 써봤다고 생각했는데
아직도 배울게 있는게 참 흥미롭다.
특히 위 방법들은 이번 프로젝트를 하며 계속 사용하게 될 기능들이라
처음 접하지만 벌써 여러번 사용하여 익숙해졌으며
너무너무 편해서 소개 & 정리하고자 포스팅해봤는데 역시 하길 잘한 것 같다.
끝!
'TIL' 카테고리의 다른 글
3월3일 - TypeORM에서의 pagination (limit, offset) (0) | 2023.03.03 |
---|---|
3월2일 - cookie에 있는 accessToken, refreshToken을 받지 못하는 문제(Insomnia) (0) | 2023.03.02 |
2월28일 - entity cascade 옵션 추가하기 (0) | 2023.02.28 |
2월27일 - Nest.js에서 jest로 테스트 코드 작성하기 (0) | 2023.02.27 |
2월25일 - ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1) (0) | 2023.02.26 |