Git 개념 정리 (Branch, Workflow, Reset)

Why do we need a branching?

Branch가 필요한 이유들은 아래와 같다

  • Master branch를 에러 없이 계속 유지시킬 수 있다. (다른 branch에서 작업하고 에러 없이 완성된 결과를 Master에 merge 시키는 방식으로 활용)
  • Original file을 건드리지 않고 계속 유지시키면서 작업을 할 수 있다
  • 여러 사람들이 동시에 작업하는 것도 쉽게 가능하다.

Branch를 관리하는 방법은 정해져 있지 않고 하기 나름이다. 복잡하고 대규모 프로젝트를 진행할수록 그 중요성이 높아지고 유용해진다.

Git flow example

Git Workflow

대략적인 Git에서의 Workflow 의 이해를 돕기 위해 아래의 그림을 먼저 보자

Git에서 Head는 현재 branch를 가리킨다.

이전 포스팅에서 설명했지만 Working Directory는 작업자가 직접 작업을 하고 있는 공간, Index는 Staging area로 Repository로 정보가 넘어가기 전에 머무는 공간이다. Commit을 통해 Git Repository로 정보가 넘어간다.

먼저 Git init을 하게 되면 git repository가 생성이 되고 아직 아무런 add를 하지 않았기 때문에 file은 Working Directory에만 존재한다.

Git add를 하게 되면 Index에 파일 정보가 넘어간다. 아직은 Git Repository에 정보가 가지는 않은 상태이다.

commit을 하게 되면 Repository에 file이 저장된다.

이제 file v1을 수정해서 v2로 만들면 아래와 같이 Working Directory에만 변경되어 있게 된다.

이후 Git add, Commit을 거치면 아래와 같이 Index, Repository로 file v2가 기록된다.

Git Reset

위와 같은 Flow로 file을 git을 이용해 저장해 놓으면 그 기록을 이용해 우리가 원하는 시점으로 되돌리는 것도 쉽게 가능해진다.

먼저 file을 한번 더 수정해 v3를 만들어 git에 저장해 놓았다고 가정하자. 그러면 아래와 같은 상태가 되었을 것이다.

Git reset을 하는 방법에는 3가지가 있는데

  1. Soft
  2. Mixed
  3. Hard

이렇게 존재한다. 방식은 아래와 같이 그림으로 보면 이해하기 좋다

기본적으로 git reset은 head가 가리키는 파일을 예전 버전으로 되돌려주는 것이고 거기에 Index와 Working Directory 어디까지 영향을 줄 지를 정할 수가 있는 것이다. 기본적으로 git reset 명령어에 옵션을 주지 않으면 mixed가 default로 동작한다고 한다.

Donghun Ryou


Popular Categories


Search the website


today visits :

55

total visits :

10028


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다