💾 github란?
프로젝트를 진행할 때 협업을 도와주는 툴
소스코드 저장 및 공유, 협업 공간으로 사용된다.
github 계정이 존재하고 Repository를 생성했다는 가정하에 진행함.
git을 사용하기 위해 환경설정을 해준다.
(컴퓨터마다 처음에만 해주는 작업)
git config --global user.name "내 이름"
git config --global user.email "내 이메일"
git config --list <!-- 환경설정이 잘 되었는지 확인 -->
git을 초기화 해준다.
(프로젝트를 맨 처음 올릴 때만 해주면 됨.)
git init
작성한 파일을 전부 add 한다.
특정 파일만 add하려면 . 대신 파일명을 작성한다.
git add . <!-- '.'은 모든 파일을 의미함 -->
작성한 파일의 History를 만들어준다.
ex) 어떤 내용을 변경했는지 등등
git commit -m "commit 메시지"
github에 만든 Repository와 작성한 소스코드가 존재하는 폴더를 연결해준다.
(해당 Repository에 내 코드를 보내기 위함)
git remote add origin [Repository주소] <!-- []제외하고 작성 -->
지정한 Branch에 소스코드를 보낸다.
git push origin [Branch이름] <!-- []제외하고 작성 -->
해당 작업을 끝내면 github에 첫 소스코드가 올라간 것을 확인할 수 있다.
이 다음부터는 소스코드를 수정/작성하고 3->4->6의 과정을 반복하면 된다.
한 프로젝트를 리더와 팀원이 진행하는 상황이라고 가정
팀 리더가 프로젝트를 생성 후 위의 기본 사용법에 작성한 내용을 진행한다.
Team member는 프로젝트를 수행하기 위해 github에 올라온 소스코드를 다운 받아야한다.
이 때 내가 프로젝트를 저장할 폴더 위치에서 해당 명령어를 실행한다.
폴더명을 제외하고 입력하면 Repository명과 동일하게 생성된다.
git clone [Repository주소] [폴더명] <!-- []제외하고 작성 -->
<!-- 모든 이력이 아닌 가장 최신 소스코드만 가져오려면 depth를 추가해준다. -->
git clone --depth=1 [Repository주소]
다운받은 소스코드에서 Team member가 맡은 부분을 개발하고 기본 사용법의 3->4 과정을 진행한다.
git add .
git commit -m "commit 메시지"
⭐️ master Branch는 최종 버전이 올라가는 곳이다.
Team member의 소스코드를 바로 최종 버전으로 올리기엔 위험하다.
그러므로 Team member 개인을 위한 Branch를 생성해주어야 한다. (에러 방지❗️)
git checkout -b [브랜치명] <!-- []제외하고 작성 -->
생성한 Branch에 소스코드를 올린다.
git push origin [4번에서 생성한 Branch명] <!-- []제외하고 작성 -->
push 후 Repository 페이지를 새로고침 해보면 새로운 Branch를 생성해 push했다는 알림 메시지와 함께 Compare & pull request 버튼을 볼 수 있다.
⭐️ Pull request(PR) 은 내 소스코드를 master branch에 올리기 전에 Team Leader에게 확인받는 과정이라고 생각하면 된다.
Team Leader에게 남길 메시지와 함께 pull request를 create한다.
Team Leader는 Repository의 상단 Pull request 메뉴에 PR이 추가된 것을 확인할 수 있다.
Team member가 작성한 PR을 클릭해 확인한다.
🧐 Team member가 작성한 소스코드를 확인한 후
- 수정사항이 있으면 => Review changes
- 문제가 없다면 => Merge pull request -> Confirm merge
Team Leader도 개발을 진행중이었을 것이다.
그러므로 Team Leader가 작성중인 소스코드와 Merge된 최종 버전의 소스코드가 일치하지 않게 되어 Version을 맞춰줘야한다(동기화)❗️
⭐️ 이 때, 우선 Team Leader가 작성중이던 소스코드를 저장해줘야 한다.(충돌이 발생할 수 있으므로)
git add .
git commit -m "commit 메시지"
<!-- 변경 내용을 비교해보고 싶으면 diff를 실행해준다. -->
git diff [기존 branch] [비교할 branch] <!-- []제외하고 작성 -->
master branch와 동기화해준다.
pull을 실행하면 Team Leader가 작성한 소스코드와 Team member가 작성한 소스코드가 합쳐진다.
git pull origin master
동기화 후 Team Leader가 작성한 소스코드까지 개발이 완료되면 push 해준다.
(실제로는 Leader도 본인의 branch가 존재할 것이지만 임의로 진행)
git push origin master
Team Leader + Team member 의 소스코드가 합쳐져 master branch에 올라간 것을 확인할 수 있다.
⭐️ 이렇게 pull, push를 반복하며 협업을 진행한다. ⭐️