5. 브랜치 관리하기

    - git과 branch를 더 편하게 관리하기 위한 몇 가지 명령을 살펴본다
    - 지금 이해하기 어렵다면 이런 기능이 있다는 것만 살펴보고, 다 공부한 다음 살펴보도록 하자.

   

    5-1. 브랜치에서 checkout과 reset의 작동 원리

           - "깃으로 버전 관리하기"에서 checkout과 reset 명령을 공부했는데, branch와 함께 사용하면
              더 다양하게 사용할 수 있기 때문에 먼저 HEAD와 branch 개념부터 간단히 알아보자.

홈 디렉터리에서 "test" 깃 저장소 생성 및 "test" 디렉터리로 이동
c1.txt를 생성하고 1을 입력, 스테이징 및 "c1" 커밋
HEAD는 master Branch를 가리키고, master Branch는 c1 커밋을 가리킨다.
sub Branch 생성 및 master Branch에서 c2.txt 파일 생성, 스테이징, "c2" 커밋
sub Branch로 이동 및 s1.txt 생성, 스테이징, "s1" 커밋

이전에 reset 명령을 통해 master Branch에 있던 여러 커밋 중 하나를 골라서 돌아갔다.

Branch가 여러 개일 때 reset 명령은 어떻게 사용할 수 있을까?

이럴 때는 현재 Branch가 아닌 다른 Branch에 있는 커밋을 골라서 최신 커밋으로 지정할 수 있다.

 

sub Branch에 있는 상태에서 master Branch에 있는 c2 커밋을 sub Branch의 최신 커밋으로 지정
sub Branch -> c2 이므로 원래 있던 s1 커밋은 연결이 끊기면서 삭제

              따라서, git reset 명령을 사용하면 현재 Branch가 가지는 커밋을 여러 Branch 사이를 넘나들면서 제어할 수 있다.

              [정리]

              git checkout : HEAD를 제어하여 Branch를 이동할 수 있다.
              git reset : HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있다.
                                이때, 어떤 커밋이든 지정할 수 있고, 명령을 수행한 뒤 Branch와 연결이 끊긴 커밋은 삭제된다.

 

    5-2. 수정 중인 파일 감추기 및 되돌리기 - git stash

           - 브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야할 경우,
             커밋하지 않은 파일들을 그냥 두어도 상관은 없지만, 계속 커밋하라는 메시지가 나타난다.
              또한, 실수로 다른 파일들과 함께 커밋이 될 수도 있다.

           - 이럴 때! 아직 커밋하지 않고 작업 중인 파일들을 잠시 감춰둘 수 있다.
             따라서 당장 필요한 작업들을 끝낸 후에 다시 감춰둔 파일들을 꺼내오면 된다.

git stash 명령을 사용하려면 tracked(한 번은 커밋한 상태)여야 하므로 f1.txt 생성 및 스테이징, "f1" 커밋
f2.txt 파일 생성 및 스테이징, "f2" 커밋
f1.txt와 f2.txt 다시 한 번 수정하기

 

이제 f1.txt와 f2.txt를 커밋하기 이전에 다른 파일을 수정해야한다고 가정해보자

커밋하지 않은 수정 내용을 어딘가에 보관하려면 git stash 명령을 사용한다.

git stash save 또는 git stash라고 해도 된다.

조금 전에 나타났던 modified 메시지가 사라졌다!

 

같은 방법으로 여러 파일을 수정한 후 따로 보관할 수 있는데,

이렇게 감춘 파일들은 git stash 목록에서 확인할 수 있다. - git stash list

가장 먼저 담긴 파일이 stash{0}에 담기는데, 새로 추가된 파일로 갱신되어 담긴다!

즉. 가장 최근에 감춘 것이 stash{0}에 담긴다. (stash stack으로 표현)

 

급한 작업을 모두 마쳤다면 감춰둔 파일을 꺼내와 계속 수정하거나 커밋할 수 있다.

git stash pop: stash list에서 가장 최근 항목을 되돌린다.

f1.txt와 f2.txt가 수정된 상태로 되돌아간다.
확인하기 1
확인하기 2

         +) 추가 명령

             git stash apply : stash list에 저장된 수정 내용을 나중에 또 사용할지도 모를 때 사용한다.

                                           stash list에서 가장 최근 항목을 되돌리지만, 저장했던 내용은 남겨둔다.

 

              git stash drop: stash list에서 가장 최근 항목을 삭제한다.

             

+ Recent posts