Git stash (깃 스태시)의 모든 것

git stash

커밋하지 않은 변경사항들을 임시저장하게 해주고, 불필요한 커밋으로 이력이 지저분해지는 것 없이 나중에 돌아올 수 있게 해준다.

어느 시점에서, 커밋하지 않은 모든 변경사항, 등록했거나 또는 등록하지 않은 변경사항을 모두 스태시할것이다. 일종의 숨기는것이다.

mkdir stash
git init

stash라는 새로운 디렉토리를 만들고, 깃의 관리를 받게하기 위해 git init을 명령했다.

그리고 brand.txt 와 songs.txt 파일을 각각 만들고, 임의의 내용을 넣어서 스테이지에 등록했다,

그 후 crow브랜치를 새로 만들었다. 그리고 각각의 파일에 임의의 내용을 한줄씩 더 추가한 뒤 'add new song and brand'라는 메세지로 커밋을 했다.

그 후 songs.txt 파일에 I bet you think about me 라는 내용을 추가한 뒤 git add로 파일을 추가했다.커밋은 하지 않았다.

그 후 git switch master 명령으로 master 브랜치에 이동하려고 하면, 변경하기 전 commit your changes or stash them 이라고 표시가된다. 

git stash

git stash 명령을 실행하면 실행 폴더에 저장되었다고 메세지가 뜬다. 그리고 git switch master로 master 브랜치로 이동하면 이제는 가능한 것을 확인할 수 있다.

그 후 git switch crow로 crow 브랜치로 돌아와보면, 변경사항을 만들기 전, 마지막 커밋의 내용이 Songs.txt 파일에 표시되는 것을 알 수 있다.


git stash pop

스태시에서 가장 최근에 스태시한 변경사항들을 삭제하고 어디에 있든지 복사본에 다시 적용할 수 있다.

변경사항을 스태시 하기 위해 git stash를 사용할 수 있고, 잠시후 다른 브랜치나 스태시했던 동일한 브랜치에 다시 적용할 수도 있다. 

git stash pop

git stash pop 명령을 실행하니 그 전에 변경사항을 불러와서 songs.txt에 반영을 시킨것을 볼 수 있다.


git stashstash에 집어넣는 명령이고, git stash popstash에 있는 가장 최근 목록에서 변경사항을 적용한 다음 삭제하는것이다.


git stash apply

스태시에 있는 것을 꺼내서 적용한다. 하지만 apply는 스태시 영역에 스태시를 남겨둔다 -> 변경사항들은 여전히 스태시에 있고, 여러 곳에 변경사항들을 적용할 수 있다.

다양한 브랜치에 걸쳐 여러 곳에 적용해야 할 몇 가지 스태시 목록을 원한다면 유용한 커맨드이다.

nest라는 새로운 브랜치를 만들었다. 그리고 다시 crow로 돌아왔다.

songs.txt 파일에 the story of us와 sicko mode라는 내용을 추가로 적고 저장한 뒤 git status로 파일이 수정되었음을 확인했다.

그리고 add new songs 메세지로 커밋을 했다.

songs.txt 파일에 goosebumps를 추가하고, git add로 파일을 스테이지에 올린뒤 커밋하지 않고 브랜치를 옮기려고 하면 stash를 하거나 커밋을 하라는 문구가 다시 표시된다.

git stash

git stash 커맨드를 사용하여, 변경사항을 stash에 저장을 하고 goosebumps가 사라진 것을 볼 수 있다. 그리고 다른 브랜치로 이제 옮길 수 있다.

git switch nest로 nest 브랜치로 옮겨왔다. 그리고 git stash apply를 하면 충돌이 나는데, merge했을 때 충돌이 났을때랑 같은 원리로 해결할 수 있다.

git add songs.txt 변경사항을 스테이지에 올린 후 커밋을 하면 다른 브랜치로 옮겨갈 수 있게 된다.

이번에는 git switch crow로 crow 브랜치로 바꾸고, git stash apply를 하면, stash 안에 내용이 남아있어서 crow 브랜치에도 똑같이 적용이 되는것을 볼 수 잇다.

nest 브랜치와 똑같이 변경사항을 저장하고, 커밋하고, master 브랜치로 옮겨왔더니 songs.txt파일의 내용이 많이 비어있는것을 확인할 수 있다.

git stash apply를 하면 master 브랜치에서도 stash의 내용을 사용할 수 있는것을 알 수 있다.

그리고 충돌이 나는데, 이것 역시 merge를 충돌을 해결했던 것 처럼, 해결하면 된다. 


git stash drop <stash 번호>

git stash pop 을 이용하면 stash가 남지 않겠지만, git stash apply를 사용하면 git stash가 남게된다. 그래서 삭제해줘야한다.

 

git stash list

git stash list를 실행하면 이렇게 화면이 바뀌어서 남아있는 stash가 표시가 된다. 그리고 이걸 지우려고 한다.

git stash drop stash@{0}

명령을 실행하면 Dropped stash@{0} 메세지를 반환해준다.

git stash list를 해도, 남아있는 stash가 없기 때문에 화면이 안바뀐다.


git stash clear

남아있는 모든 stash를 정리해주는 명령이다.

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Git and Github 다른 글

    이전 글

    다음 글