개발자는 늘 소통하는 직업이다.
개인 프로젝트가 아닌 대규모 서비스 프로젝트를 들어가다 보면 많은 양의 코드를 혼자 작성하기에는 무리가 갈 수 있다.
그래서 개발자에게 코드 공유와 협업을 불가피하다. 그리고 누군가에게 코드를 리뷰를 하기 위해서 git을 사용한다.
장점으로 어떠한 기능을 강조하는 것도 좋지만 단점으로 한 내용을 강조하는 것도 효과적이다.
그렇다면 협업 실패가 초래하는 문제점들과 그에 관한 원인들을 살펴보자
git에는 중요한 내용들이 정말 많습니다. 그러기에 크게 나눌 필요가 있다.
그래서 이 글에서는 git에 대한 4가지 내용과 git work-flow에 대해 요약하는 내용을 다룰 생각이다.
목차
4가지 개념
1. Git의 핵심 구조와 파일의 상태 변화
2. 커밋
3. 브랜치
4. 로컬 저장소와 원격 저장소
- 일반적인 Git의 작업 흐름
Git의 구조는 크게 4가지 영역으로 나눌 수 있다.
working directory, staging area, repository (Local, Remote)
영역을 어떻게 들어가고 나가는지 원리를 알면 구조에 대한 구분이 명확해질 수 있다.
구조
working directory
: 내가 현재 작업하는 디렉토리staging area
: git add를 한 파일들을 모아둔 곳이다.Local repository
: 로컬 저장소로서 git commit한 파일들을 모아둔 곳이다.Remote repository
: 원격 저장소로서 git push한 파일들을 모아둔 곳이다.
git add
<-> git reset <file>
git commit
<-> git reset --soft
git push
<-> git fetch
영역에 따른 구분이 되었다면 파일에 따른 구분도 필요하다.
파일 상태는 크게 2가지이고 세분화하면 4가지로 나눌 수 있다.
커밋은 작업 내용의 버전을 기록하기 위해 쓰인다.
쉽게 말해서 커밋은 작업 내용의 '스냅샷'과 같다.
커밋과 푸시의 차이
커밋은 로컬 저장소에 변경 내역을 저장하는 동작이다.
반면에 푸시는 커밋을 한 변경 내역을 원격 저장소에 업로드하는 동작이다.
브랜치는 git에서 독립적인 작업 영역이고 그 결과를 저장할 수 있는 개별적인 흐름이다.
브랜치를 사용하면 서로 다른 작업을 별도로 작업할 수 있고 나중에 하나의 코드베이스로 병합할 수 있다.
브랜치는 특정 커밋을 가리키는 참조이다.
다시 말해 브랜치는 특정 '버전(커밋)'을 가리키고 있다.
이를 통해 우리는 여러 개의 작업을 독립적으로 진행할 수 있다.
로컬 저장소는 개의 컴퓨터에 위치하며, 원격 저장소는 인터넷상의 서버 등에 위치한다.
원격 저장소를 이용하면 다른 사람들과 협업할 수 잇고 백업을 생성할 수 있다.
원격 저장소 초반 등록
git push --set-upstream origin master
origin
이라는 원격저장소를 추적하면서 origin
이라는 원격저장소에 로컬에 있는 master
브랜치를 보내는 커맨드이다.