원격저장소의 장점은 남들과 협업할 수 있다.
협업을 할려면 소스코드가 필요한데 깃허브가서 다운 받아도 되지만
git clone 원격저장소주소
새로운 작업폴더에서 이거 입력해도 원격저장소에 있던 내용을 그대로 복제된다.
참고로 필요할 땐 특정 브랜치 1개만 clone 해올 수 있다.
ex) clone -b 특정브랜치명 원격저장소주소
이제 폴더 열어서 코드짜고 commit 하고 git push 하면 협업 끝.
인줄 알았지만 그 팀원의 아이디를 Collaborators 메뉴에 등록해놔야 협업이 가능하다.
그런데 주의점이 있다.
원격저장소가 타인에 의해 업데이트 되어 원격 vs 로컬 내용이 다르다면 로컬저장소에서 git push
가 안된다. 왜냐면 그런 상황에서 대충 git push
해버리면 코드가 꼬이기 때문에 미리 예방해주는 것일 뿐이다.
그럴땐 git pull
을 사용하면 된다.
git pull 원격저장소주소
이러면 원격저장소에 있던 모든 브랜치 내용을 가져와서 로컬저장소에 합치라는 뜻이다.
이걸 해주면 로컬이 원격저장소 내용을 반영한 최신상태가 되기 때문에 이제 git push
가 가능하다.
결론은 변동사항이 생겼다면 git pull
하고 나서 git push
하면 된다.
git pull 원격저장소주소 브랜치명
입력하면 특정 브랜치만 가져올 수 있다.
git pull
입력하면 자동으로 git fetch + git merge를 해준다.
git fetch
는 원격저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻이고,
git merge
는 그걸 merge 하라는 뜻이다.
그래서 git pull 할 때 팀원 2명이서 같은 파일을 건드리고 있을 경우 merge conflict가 날 수 있다.
팀끼리 일하는 경우 merge 하기 전에 토론하거나 검토하거나 그래야하는 경우가 많다.
그래서 github.com은 pull request 라는 기능이 있다.
이거 누르면 내 브랜치좀 merge 해달라는 요청을 할 수 있고,
팀원끼리 merge전에 코드검토(코드리뷰)가 가능하다.
github.com 웹사이트에서 pull request를 열고 싶으면
🔼 아무나 상단 Pull requests 메뉴에서 초록버튼 누르면 pull request 생성이 가능
🔼 그 다음엔 어떤 브랜치를 어디에 합칠 것인지 선택하고,
하단에서 commit 내역, 변경내역 잘 보고 초록버튼 누르면 pull request가 열림
🔼 그럼 Pull requests 메뉴에서 이렇게 확인가능한데 누르면 코드를 리뷰할 수 있는 곳이 나옴
🔼 잘 된것 같아서 merge하기로 했으면 merge 할 때 여러가지 옵션이 있는데 택1 하면 됨
새로운 merge commit을 하나 생성해주는 3-way merge를 실행해준다.
- main 브랜치 조회시 합쳐진 브랜치의 commit 내역도 전부 나옴
- 터미널에 git log --oneline --graph 해보면 합쳐진 브랜치도 그림으로 나옴
- 그래서 commit 내역이 많으면 복잡하고 더러워보일 수 있음
- 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit을 생성줌
- git log --oneline --graph 해보면 합쳐진 브랜치 안나옴
- commit을 하나로 합쳐서 main 브랜치로 순간이동 시켜주는 행위라 사람들이 깔끔하다고 좋아함
- 합쳐질 브랜치를 main 브랜치 최신 commit으로 rebase하고나서 fast-forward merge 비슷한걸 해줌
- 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존됨