git github (CLI) - clone, push, fetch, pull, PR
1. 로컬/원격 저장소 관리
1) 클론(Clone) : 원격 저장소를 로컬 저장소로 복제해온다.
2) 푸시(Push) : 로컬 저장소를 원격 저장소에 밀어넣는다.
3) 패치(Fetch) : 원격 저장소를 로컬 저장소에 병합하지 않고(별도의 브랜치에) 일단 받아온다.
4) 풀(Pull) : 원격 저장소를 로컬 저장소에 가져와서 합친다.(fetch + merge)
※ 참고. 원격 저장소 브랜치 이름 - main 브랜치 → master 브랜치 - origin → 원격 저장소에 붙은 일종의 별명 - origin/HEAD → 원격 저장소 origin의 HEAD - origin/main → 원격 저장소 origin의 main |
2. github 원격 저장소 연결
- 먼저 원격 저장소(github repository)를 생성한 후 https나 SSH 링크를 복사해와서 연결한다.
- 로컬 저장소에서 연결하는 방법은 github 저장소를 만들 때 Add a README file를 체크하지 않는다면 아래 가이드가 저장소에 자동으로 저장된다.
- 여기서 두번째 칸을 보면 잘 나와있다.
1) git remote add origin git@github.com: /////.git
git remote add는 원격저장소와 연결하는 명령어이고, origin은 원격저장소 이름(밑줄친 부분)을 origin이라는 이름으로 상호작용하겠다 라는 별칭으로 사용된다.
2) git branch -M main : 메인브랜치 이름을 main으로 변경해주는 명령어이다. 이미 main일때는 변경하지 않아도된다.
3) git push -u origin main : 변경사항들을 원격 저장소에 모두 밀어넣는 명령어이다.
3) git fetch -u origin main : 원격 저장소의 커밋을 가져오되 병합하지 않고 origin/main이라는 브랜치로만 가져온다. (결론적으로 main 브랜치에는 병합되지 않은 상태다.)
3) git checkout FETCH_HEAD : 변경사항을 가리키는 헤드로 이동. 변경사항을 볼 수 있다.
3. github 원격 저장소 PR
- PR(Pull Request) : 내가 소유하고 있지 않은 다른 원격 저장소가 내 변경사항을 풀(Pull)하도록 요청(Request)을 보내는 것
- PR이 이루어지는 순서
1) 기여하려는 저장소를 본인 계정으로 포크하기
2) 포크한 저장소를 클론하기
3) 브랜치 생성 후 생성한 브랜치에서 작업하기
4) 작업한 브랜치 푸시하기
5) 풀 리퀘스트 보내기
- 위의 PR이 완료되면 host에게 아래와 같은 메시지와 버튼이 뜬다. host는 검토 후 승인할지 결정하고, 승인하면 PR요청자는 contributor가 된다.
- PR은 기능을 개선하는 것 외에도 오탈자 수정 등 간단한 것들도 있으니 많이 시도해보는 것이 좋다.
※원격 저장소를 활용하기 위한 명령어
용도 | 명령어 |
원격 저장소 이름 조회 | git remote |
원격저장소 이름 + url 조회 | git remote -v |
원격 저장소 추가 | git remote add <원격저장소명> <원격저장소경로> |
원격 저장소의 내용을 로컬 저장소로 복사 | git clone <원격저장소경로> |
로컬 저장소의 변경내용을 원격 저장소에 반영 | git push <원격저장소명> <로컬브랜치명> |
* 참고) -u 옵션과 함께 push하면 이후로 <원격저장소명> <로컬브랜치명> 생략 가능 |
git push -u <원격저장소명> <로컬브랜치명> |
원격 저장소의 변경내용을 로컬 저장소에 반영 | git pull <원격저장소명> <로컬브랜치명> |
로컬 저장소와 원격 저장소의 차이를 비교 후 반영 | git fetch <원격저장소명> <로컬브랜치명> |
'DEV > Git' 카테고리의 다른 글
git :: git merge, conflict(CLI) (0) | 2022.09.28 |
---|---|
git :: git branch(CLI) (0) | 2022.09.27 |
git :: git stash(CLI) (0) | 2022.09.26 |
git :: git revert, reset(CLI) (0) | 2022.09.25 |
git :: git diff(CLI) (0) | 2022.09.24 |
댓글