이번 포스팅에서는 이전에 배웠던 브랜치와 reset 명령어를 이용하는 방법과, 다른 작업 파일을 우선적으로 작업을 해야하는 경우 기존에 작업중이던 파일들을 임시 저장소에 저장하는 stash 명령어에 관해서 이야기 할 것이다. 

 

 

브랜치와 git reset 

 

이는 특정 브랜치가 필요에 의해서 이동하는 것을 reset 명령어를 통해서 굉장히 자유롭게 행할 수 있다. 

일단 test라는 새로운 깃 저장소를 만들고, 그 안에서 master_1.txt파일을 만들어 1을 입력하고 커밋 메세지 "one"으로 커밋한다.  이후, 새로운 sub라는 이름의 브랜치를 생성한 다음, 마스터 브랜치에서 master_2.txt 파일에 2를 입력하여 커밋 메세지 "two"로  커밋한다. 

HEAD를 sub 브랜치로 옮긴 뒤에 sub.txt 파일에 3을 입력하여 커밋 메세지 "three"로 커밋한다. 

$ cd ~
$ git init test
$ cd test
$ vim master_1.txt
$ git add master_1.txt
$ git commit -m "one"

$ git branch sub
$ vim master_2.txt
$ git add master_2.txt
$ git commit -m "two"

$ git chekcout sub
$ vim sub.txt
$ git add sub.txt
$ git commit -m "three"

$ git log --oneline --branches --graph
$ git log --oneline --branches



현재 HEAD 는 sub 브랜치에서 가장 최근에 커밋한 파일인 sub.txt를 가리키고 있다. 이것을 git reset <해시 값>을 통해서 master 브랜치의 master_2.txt를 가리키도록 만든다. 

$ git reset 해시값 


이후 결과를 확인하기 위해서 

$ git log --oneline --branches --graph 

를 통해서 확인한다. 

 

 

수정중인 파일 임시저장하기 (git stash)

 

코드를 짜는 작업이 메뉴얼대로 진행된다면, 더할나위 없이 좋겠지만, 현실은 그렇지 못하다. 이 작업을 하던 도중 선행되어야 하는 작업이  생기는 경우가 빈번하게 일어난다. 이런 상황에서 어느정도 진행 혹은 수정 중인 파일을 지운다음 다른 작업을 한 뒤 다시 처음부터  해야할까? git stash를 활용하여 이런 복잡한 경우에 임시 저장소에 저장시켜 놓았다가 원하는 시간에 다시 꺼내서 작업을 진행할 수 있다.

git stash 명령어를 이용하는 방법은 복잡하지 않지만 한가지 유의해야 할 점이 있다. 바로 stash 명령을 사용하기 위해서는 파일이  tracked 이어야 한다. 즉, 한번은 커밋한 상태여야 한다는 것이다. 

실습에서는 일단 st라는 깃 저장소를 만든 뒤 file1..txt와 file2.txt에 각각 1과 2를 입력한뒤 각각 커밋한다. ( 이때 커밋 메세지는 크게 중요하지 않다. 스스로 임의로 정해서 커밋하면 된다.)

이후 file1.txt 파일과 file2.txt 파일을 11과 22로 수정한뒤 git status 명령어를 통해서 stash 명령어를 실행하기 위한 과정인 파일들이 tracked 인 상태인지 확인한다. 이후 stash 명령어를 사용하고, git status 명령어를 통해서 아직 남아있는지 확인한다. 

$ cd ~ 
$ git init st
$ cd st 

$ vim file1.txt
$ git add file1.txt
$ git commit -m "file1"

$ vim file2.txt
$ git add file2.txt
$ git commit -m "file2"

$ vim file1.txt
$ vim file2.txt

$ git status


작업트리에 수정한 file1.txt 파일과 file2.txt 파일이 modified (tracked) 되어있는 것을 확인할 수 있다. 

$ git stash
$ git status 



git stash 명령어를 통해서 임시저장소에 수정한 파일(file1.txt, file2.txt)를 보낸 뒤에 다시 확인을 해보면 작업 트리가 비어있는 것을 확인할 수 있다. 이렇게 임시저장소인 stash에 한번만 저장할 수 있는 것은 아니다. 여러번 사용할 수 있으며, 이 경우에는 

$ git stash list

 


명령어를 통해서 stash에 들어있는 것들을 확인할 수 있고, 가장 최근에 stash에 넣은 파일들이 0번째 인덱스에 저장되고, 기존에 있는 파일들은  인덱스가 하나씩 뒤로 밀리는 스택의 형태로 저장된다. 

$ git stash pop
$ git status

을 통해서 다시 작업을 시작할 수 있으며, pop 명령어를 통해서는 가장 최근에 stash에 넣은 파일들을 불러온다. 

728x90
반응형

'버전 관리 > git & github' 카테고리의 다른 글

GitHub 연동하기 2  (0) 2021.01.17
GitHub 연동하기 1  (0) 2021.01.15
git과 브랜치 2  (0) 2021.01.13
git과 브랜치(Branch) 1  (0) 2021.01.11
git을 이용하여 수정한 파일 되돌리기  (0) 2021.01.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기