제일 먼저 로컬에서의 형상관리에 대해 알아보자.
로컬 프로젝트 폴더의 위치에서 "git init"을 실행해준다.
이를 통해 그 프로젝트에서 git을 실행한 것이다.
이 폴더의 변경사항들을 저장하기 위해선 "git add ."을 실행해준다.
이 변경사항들의 모든 상태를 저장하기 위해선 "git commit -m "ex)버전이름""을 실행해준다.
여기까지가 로컬에서의 형상관리이다.
이를 github라는 서버에 저장하기 위해서 push를 해줘야 한다.
명령어는 "git push origin main" 이다. 이렇게 되면 commit된 상태가 서버에 그대로 저장이 된다.
이제 서버에 올려진 버전을 다른 사람 혹은 내 다른 기기에서 받고 싶다면 clone을 해주면 된다.
명령어는 "git clone 주소"이다. 이렇게 프로젝트를 clone한 폴더에서도 위와 같은 방법으로 commit,push가 가능하다.
물론 협업자나 본인이여야 가능하다.
서버에서 상태가 변경되었거나 누군가 수정하여 변경된 상태를 받아오고 싶다면 "git pull origin main"을 해준다.
위의 방법은 혼자서 노트북과 데스크탑을 번갈아 사용하는 유저에게는 충분하나 협업을 진행하기엔 어려움이 있다.
가령 같은 버전을 모두 pull 받은 이후에 협업자들이 커밋을 진행한다면 conflict가 일어날 수 있기 때문이다.
협업자끼리 수정한 부분이 겹치지 않다면 pull로 버전을 관리해주지만 수정한 파일이 같거나 같은 라인이고 이를 모두 commit했다면 conflict가 일어나게 된다.
이러한 번거러움을 해결하기 위해선 branch를 사용하면 된다.
팀원들이 각자의 branch를 가지고 프로젝트를 만들어 나간다. 그럼 branch와 관련된 명령어를 살펴보자.
"git branch newFeature"
newFeature라는 새로운 브랜치 생성
"git checkout newFeature"
newFeature라는 브랜치로 이동
"git branch -D newFeature"
newFeature라는 브랜치 삭제
"git push origin 브랜치이름"
특정 브랜치를 깃허브에 푸시
"git pull origin 브랜치이름"
특정 브랜치를 깃허브에서 가져와 최신화한다.
이렇게 나눠진 브랜치들을 합치는 것을 Merge라고 한다.
main아닌 브랜치에서 pull requests을 통해 main과 합치면 된다.
이번에는 Fork를 활용한 협업 방법에 대해 알아보자.
Fork는 남의 리포지토리를 내 리포지토리에 그대로 복제하는 것을 의미한다.
이렇게 가져온 리포지토리를 나의 로컬에서 clone하고 작업하여 push한다.
그 이후 pull requests를 하며 원본 리포지토리에 반영해달라고 요청을 하면 된다.
(이 글은 신재형님의 깃허브 강의를 참고하여 만들어졌습니다.)