버전 관리가 필요한 이유
개발자 간의 협업을 위해 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고, 같은 모듈로 개발하더라도 소스를 공유하며 개발할 수 있기 때문이다.
Git
- 오픈 소스 버전 관리 시스템(VCS : Version Control System)
- 로컬에서 버전 관리
- 소프트웨어 개발 및 소스 코드 관리에 사용
git은 본인의 코드와 그 수정내역을 기록하고 관리하도록 돕는 버전 관리 프로그램이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해준다. git을 통해 브랜치를 생성하고 이전 브랜치로 복구, 삭제, 병합이 가능하다.
하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수 없다.
Github
- Git Repository를 위한 웹 기반 호스팅 서비스
- 클라우드 서버를 사용해서 로컬에서 버전 관리한 소스코드를 업로드하여 공유 가능
- 분산 버전 제어, 엑세스 제어, 소스 코드 관리, 버그 추적, 기능 요청 및 작업 관리를 제공
github는 git 저장소를 관리하는 클라우드 기반 호스팅 서비스이다. git 저장소 호스팅 서비스는 클라우드 기반으로 다른 사람과 소스코드 공유가 가능하며 git의 기본적인 기능을 확장하여 제공한다. 또한 클라우드 서버에 소스를 올리기 때문에 한 프로젝트에 여러 명의 사람이 참여하여 버전 제어 및 공동 작업이 가능하다.
내가 만든 버전을 깃허브에 올리기
- git init : 현재의 디렉토리에 git 로컬 저장소(.git)를 생성한다.
- git add : commit으로 만들기를 원하는 파일만 선택할 수 있다. 변경된 파일중 staging area에 추가하기를 원하는 파일을 추가한다.
- git commit 0 -m "message" : add된 파일을 하나의 덩어리로 만든다. 최종 코드를 확정한다. 이때 -m "message"를 통해 커밋 메시지를 작성할 수 있다. 커밋은 스냅샷! 당시를 찍어놓은 것으로 이해!
- github 사이트에서 레포지토리를 생성한다.(프로젝트 저장소)
- git branch -M <브랜치명> : 저장소에 올리긴 할건데 어떤 방(branch)에 올릴 것인지 설정한다.
- git remote add origin <레포지토리> : 현재 디렉토리에 github 저장소 주소를 알려준다.
- git push origin main : 로컬 저장소에서 commit한 변경사항들을 원격 저장소에 올린다.
다른 사람이 만든 저장소 받아오기
- git pull origin <브랜치명> : 새로운 변경 사항을 내 컴퓨터에 받아온다. 원격 저장소 <브랜치명>의 내용을 가져와서 현재 브랜치에 병합(merge)한다.
- git clone <레포지토리> . : 원격 저장소의 코드를 현재 디렉토리에 받아온다. 로컬 저장소(.git)도 자동으로 생성된다.
- git fetch : 새로고침의 느낌이다.
- git fork : 저장소 통째로 복사하기
git branch
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않아 여러 작업을 동시에 진행할 수 있다. 각자 작업을 진행한 후 작업이 끝난 사람은 브랜치를 메인 브랜치에 merge한다.
$ git branch : 현재 사용되고 있는 branch를 보여줌
$ git branch [만들려고 하는 브랜치 명] : 새로운 브랜치를 하나 만듦
$ git checkout [브랜치 명] : 사용하고자 하는 브랜치를 지명한다.
$ git switch [브랜치 명] : 브랜치로 이동해라.
$ git merge [브랜치 명] : '현재'의 브랜치에서 [브랜치 명]의 변경사항을 병합한다.
ex) git merge javascript : 메인(현재) 브랜치에서 javascript 브랜치의 변경사항을 병합
$ git branch –d [브랜치 명]: 해당 브랜치를 제거한다.(병합을 완료하면 사용했던 브랜치는 반드시 제거해야 한다.)
git merge
각자의 branch에서 작업이 완료되었다면 merge를 해주어야 한다.
- git switch main : 먼저 base가 될 main 브랜치로 이동한다.
- git merge oct : compare 브랜치인 oct 브랜치(예시)를 나(HEAD : 현재 브랜치)와 합치고 싶다고 명령한다.
브랜치 관리 TIP!
- 보통 feat/기능이름 으로 한 사람이 개발하는 기능 브랜치를 만든다. (혹은 fix/버그이름, hotfix/급한버그)
- 작업이 끝나면 dev(혹은 Main) 브랜치로 PR을 보낸다.
- dev 브랜치에서 큼지막한 작업이 모두 머지되면 release(혹은 latest) 브랜치로 머지시키고 이를 실서버에 배포한다.
- 직접 커밋은 feat(혹은 fix, hotfix) 브랜치에만 한다.
- dev나 main, release 브랜치에는 직접 커밋하지 말고 머지만 한다.
'프로그래머스 데브코스' 카테고리의 다른 글
[JavaScript] Map 과 Set (0) | 2023.10.13 |
---|---|
[JavaScript] JavaScript의 10가지 코드 트릭 (0) | 2023.10.03 |
[모딥다/스터디] 39장. DOM(Documents Object Model) (0) | 2023.10.03 |
[특강] 코딩테스트 문제풀이 꿀팁 (0) | 2023.10.02 |
[WIL] DAY2,3,4 I Learned / 자바스크립트 기초, 네트워크 기초, 자료구조, 알고리즘 (0) | 2023.09.25 |