Git

Github 사용법 2. 타인과 협업하기 (git clone, pull)

연습노트 2024. 7. 24. 16:59

원격저장소의 장점은 남들과 협업할 수 있다는 겁니다. 

어려운건 아니고 개발자 10명이서 각각 작업한 내용을 원격저장소에 올리면 그게 협업 아니겠습니까 

협업해봅시다. 

 

 

 

 

 

일이 너무 많아서 코딩노예 1명을 고용했습니다

 

물론 여러분은 친구가 없으니까 가상의 팀원을 하나 만들어봅시다. 

코딩노예 팀원이 원격저장소에 있던 코드를 같이 짜고 싶다면 어떻게할까요.

그 친구도 똑같이 코드짜서 git push 어쩌구 하면 그게 협업 끝입니다. 

 

 

 

 

 

 

 

 

"기존 소스코드가 없는데 코드어떻게 짬?" 

 

 

 

당연히 코딩노예는 기존 소스코드를 다운받아서 시작할 수 있습니다.  

다운받는 법은 github.com 가서 다운받아도 되고 

 

git clone 원격저장소주소

새로운 작업폴더에서 이거 입력해도 됩니다. 

그럼 원격저장소에 있던 내용을 그대로 복제해줍니다. 

새로 폴더만들어서 진짜 그런지 테스트해봅시다. 

 

 

 

▲ git clone 했더니 진짜로 저번 시간에 만들었던 리포지토리가 다운받아집니다. 

참고로 필요할 땐 특정 브랜치 1개만 clone 해올 수 있습니다. 필요하면 찾아봅시다. 

 

 

 

 

 

 

이제 팀원도 폴더 열어서 코드짜고 commit 하고 git push 하면 됩니다. 

 

 

 

 

 

 

▲ 다만 그 팀원도 github 아이디가 있어야하고

그 팀원의 아이디를 Collaborators 메뉴에 등록해놔야 협업가능합니다.  

 

 

 

 

 

 

 

팀원이 commit 하려는데 문제가 생김 

 

git push는 맘대로 할 수 있는게 아닙니다.

갑자기 다른 놈이 만든 파일이 원격저장소에 생기면 git push 못합니다. 

 

 

예를 들어 github.com 의 여러분 리포지토리로 들아가봅시다. 

github 홈페이지에서 이거저거 눌러서 새로운 파일 하나를 만들어봅시다. 

 

 

▲ 예를 들어 저는 사이트에서 hello라는 파일을 만들고 commit 했습니다.

이런 식으로 원격저장소가 타인에 의해 업데이트되었다고 칩시다. 

 

 

 

 

 

 

다른 곳에서 일하던 코딩노예 팀원도

방금 만든 파일을 원격저장소에 업로드하고 싶어진겁니다.

예를 들어 hi 라는 파일을 만들었다고 칩시다. 

그럼 이전과 같이 commit 하고 나서 git push 똑같이 하면 됩니다.

(팀원인 척 해줄 친구가 없으면 그냥 원래 코드짜던 곳에서 git push 해봅시다)

 

 

 

 

 

 

 

"에러나는데요" 

 

 

 

 

 

 

 원격 vs 로컬 내용이 다르다면 로컬저장소에서 git push가 안됩니다.

왜냐면 그런 상황에서 대충 git push 해버리면 코드가 꼬이기 때문에 얘가 미리 예방해주는 것일 뿐입니다. 

 

 

 

 

 

 

 

git pull 이용하면 현재 원격저장소 내용 가져올 수 있음 

 

 

git pull 원격저장소주소

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

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

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

 

(참고)

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

- origin이라는 변수명을 등록해놨으면 당연히 사용가능

- 예전에 -u 했었으면 git pull, git push까지만 입력해도 잘됩니다.

 

 

 

 

 

 

참고사항 : git pull 명령어는 git fetch + git merge 축약어임 

 

git pull 입력하면 자동으로 git fetch + git merge를 해줍니다. 

git fetch는 원격저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻이고

git merge는 그걸 merge 하라는 뜻입니다. 

 

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

conflict는 branch 다룰 때 다뤄봤으니 알아서 해결하면 됩니다. 

 

 

 

 

그래서 오늘의 결론은

협업시 git push 하기 전에 뭐라그러면 git pull 존나게 하면 됩니다.