Git

[GIT] Git Branch

걸어가는 신사 2022. 1. 17. 04:27

위 글은 코드프레소 Java 웹 개발 체험단 활동 중

실무자가 알려주는 Git 활용한 프로젝트 관리 수업을 듣고 정리한 글입니다.

코드프레소 URL : https://www.codepresso.kr/


브랜치(branch)

  • 기본 브랜치로부터 파생한 독립적인 작업 공간
  • 최신 커밋을 가리키는 일종의 포인터이다.
  • 용량이 매우 가볍다.
  • 생성, 이동, 병합(merge)이 매우 쉽다.

git branch


실습

1. branch 확인

  • Git은 기본적으로 master 브랜치를 생성한다.

기본 branch (master)

  • 현재 작업 중인 브랜치 확인하는 명령어
$ git branch
  • master 브랜치는 첫 번째 커밋을 만들어야 생성된 커밋을 가리킬 수 있다.
    • 커밋이 생성되지 않았다면 $ git branch 명령어를 입력하여도 아무것도 나오지 않는다.
  • 커밋 생성 후 

$ git branch

 

2. HEAD

  • 현재 브랜치를 가리키는 일종의 포인터
  • 현재 브랜치의 마지막 커밋에 대한 스냅샷
  • 만약 HEAD를 움직인다면 내가 작업 중인 branch를 바꾸는 것이다.

$ git log 명령어 실행

  • HEAD가 master branch를 가리키고 있다.

첫번째 커밋 이후

 

  • 새로운 커밋 생성 (Commit 2)

두번째 커밋 이후

  • 다음 커밋이 생성되면 커밋은 이전 커밋이 무엇인지 저장한다.

 

3. 새로운 브랜치 생성

$ git branch [생성할 브랜치명]

ex) $ git branch feature-login

$ git branch
$ git log

 

4. 작업 브랜치 이동

(1) 작업 브랜치 이동

  • 작업 브랜치의 이동은 HEAD의 이동이다.
  • HEAD는 checkout 대상 브랜치로 이동한다.
  • 로컬 저장소의 상태는 HEAD가 가리키는 마지막 커밋이 최신이 된다.
  • 작업 디렉토리의 파일 상태도 변경된다. 
$ git checkout [이동할 브랜치명]

ex) $ git checkout feature-login

$ git branch
$ git log
작업 브랜치 이동

(2) 새로운 커밋 생성 (Commit 3)

새로운 커밋 생성 (Commit 3)

(3) 이전 브랜치(master)로 이동

  • $ git checkout master (master 브랜치로 이동)

$ git log
$ ls -la

  • 세 번째 commit을 하기위해 생성하였던 LoginService.java는 보이지 않는다.
    • 각 branch는 독립적인 공간이므로 master branch 이동시 세번째 커밋이 보이지 않는다.

이전 브랜치(master)로 이동

  • 두 번째 commit은 아직 master branch가 가리키고 있다.
  • 세 번째 commit은 feature-login branch가 가리키고 있다.

(4) 새로운 commit 생성 (Commit 4)

$ git log
새로운 커밋 생성 (Commit 4)

$ git log --all --graph
  • branch와 상관없이 모든 commit들을 보여준다.
$ git log -u
  • 커밋 내용 + 커밋된 파일의 내용도 볼 수 있다.

 

5. 브랜치의 사용

  • 개발 중 이슈가 발생되면 어떻게 해야 할까?

  • 새로운 branch를 생성해서 작업을 한다.

(1) issue branch 생성

$ git checkout -b issue
  • $ git branch issue + $ git checkout issue
  • 브랜치 생성과 동시에 이동할 수 있다.

(2) 새로운 커밋 생성 (5번째 commit)

$ git log

반응형