Github 사용법 2 (git clone, pull, PR)

hsmurf·2024년 1월 21일
0

[Git & Github]

목록 보기
6/6
post-thumbnail

git clone

원격저장소의 장점은 남들과 협업할 수 있다.
협업을 할려면 소스코드가 필요한데 깃허브가서 다운 받아도 되지만

git clone 원격저장소주소

새로운 작업폴더에서 이거 입력해도 원격저장소에 있던 내용을 그대로 복제된다.

참고로 필요할 땐 특정 브랜치 1개만 clone 해올 수 있다.
ex) clone -b 특정브랜치명 원격저장소주소

이제 폴더 열어서 코드짜고 commit 하고 git push 하면 협업 끝.
인줄 알았지만 그 팀원의 아이디를 Collaborators 메뉴에 등록해놔야 협업이 가능하다.

그런데 주의점이 있다.
원격저장소가 타인에 의해 업데이트 되어 원격 vs 로컬 내용이 다르다면 로컬저장소에서 git push가 안된다. 왜냐면 그런 상황에서 대충 git push 해버리면 코드가 꼬이기 때문에 미리 예방해주는 것일 뿐이다.

그럴땐 git pull을 사용하면 된다.


git pull

git pull 원격저장소주소

이러면 원격저장소에 있던 모든 브랜치 내용을 가져와서 로컬저장소에 합치라는 뜻이다.

이걸 해주면 로컬이 원격저장소 내용을 반영한 최신상태가 되기 때문에 이제 git push가 가능하다.

결론은 변동사항이 생겼다면 git pull 하고 나서 git push 하면 된다.

git pull 원격저장소주소 브랜치명 입력하면 특정 브랜치만 가져올 수 있다.

git pull 명령어는 git fetch + git merge 축약어

git pull 입력하면 자동으로 git fetch + git merge를 해준다.
git fetch는 원격저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻이고,
git merge는 그걸 merge 하라는 뜻이다.

그래서 git pull 할 때 팀원 2명이서 같은 파일을 건드리고 있을 경우 merge conflict가 날 수 있다.


pull request(PR)

팀끼리 일하는 경우 merge 하기 전에 토론하거나 검토하거나 그래야하는 경우가 많다.

그래서 github.com은 pull request 라는 기능이 있다.
이거 누르면 내 브랜치좀 merge 해달라는 요청을 할 수 있고,
팀원끼리 merge전에 코드검토(코드리뷰)가 가능하다.

github.com 웹사이트에서 pull request를 열고 싶으면

🔼 아무나 상단 Pull requests 메뉴에서 초록버튼 누르면 pull request 생성이 가능

🔼 그 다음엔 어떤 브랜치를 어디에 합칠 것인지 선택하고,
하단에서 commit 내역, 변경내역 잘 보고 초록버튼 누르면 pull request가 열림

🔼 그럼 Pull requests 메뉴에서 이렇게 확인가능한데 누르면 코드를 리뷰할 수 있는 곳이 나옴

🔼 잘 된것 같아서 merge하기로 했으면 merge 할 때 여러가지 옵션이 있는데 택1 하면 됨

create a merge commit 하면

새로운 merge commit을 하나 생성해주는 3-way merge를 실행해준다.

  • main 브랜치 조회시 합쳐진 브랜치의 commit 내역도 전부 나옴
  • 터미널에 git log --oneline --graph 해보면 합쳐진 브랜치도 그림으로 나옴
  • 그래서 commit 내역이 많으면 복잡하고 더러워보일 수 있음

squash and merge 하면

  • 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit을 생성줌
  • git log --oneline --graph 해보면 합쳐진 브랜치 안나옴
  • commit을 하나로 합쳐서 main 브랜치로 순간이동 시켜주는 행위라 사람들이 깔끔하다고 좋아함

rebase and merge 하면

  • 합쳐질 브랜치를 main 브랜치 최신 commit으로 rebase하고나서 fast-forward merge 비슷한걸 해줌
  • 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존됨
profile
꿈을 코드로 구현 중

0개의 댓글

관련 채용 정보