기술노트/깃허브

stash를 이용한 작업 내용 저장

반응형

자 이상태에서 test라는 branch를 만들어보자.

 

이렇게 브랜치를 만들어보자.

 

 

이상태에서 커밋을 아무거나 해보겠다.

 

뭐 이런 식으로 내용을 추가했다. 

commit하지 않은 변경사항이 생겼습니다.

 

스테이지에 올리고 commit해줍니다. 

 

이렇게 써주고 커밋합니다.

 

 

이제 만약에 

 

이렇게 적었다고 가정해보자.

 

커밋하지 않은 변경사항이 생겼다.

 

마지막 커밋(test 커밋) 과 현재 작업 디렉토리의 내용이 다르기 때문에 이런게 생긴 것이다.

 

이상태에서 main을 checkout하면 에러가 뜬다. 

 

 

이 에러는 해당 프로그램에 버그가 생겨서 급하게 수정해야하는 상황에 흔히 볼 수 있다.

 

이러한 상황을 해결하려면 

 

첫째, branch1에서 임시커밋을 하기

둘째, branch2에서 checkout을 하고 볼 일 보기

셋째, 다시 branch1로 되돌아오기

넷째, 첫째의 작업을 이어서 마무리 짓기

다섯째, 커밋 덮어쓰기 commit--amend하기

여섯째 (옵션) 필요하다면 push--force 하기

 

일단 의미없는 내용 1을 추가한 내용을 커밋해줍니다. 

 

 

이렇게 적고 커밋해준다. 

 

 

 

이번엔 아까 의미없는 내용을 지우고 의미있는 내용으로 바꿔보자.

 

 

스테이지에 올리고 커밋을 해줄건데

그냥 커밋을하면 

 

의미있는 커밋과 의미없는 커밋이 둘다 나타나게 된다.

 

의미없는 커밋은 정말 쓸데없는 건데 있어봤자 전혀 쓸모없는 건데 없는게 낫지 않은가?

이럴때는 커밋 옵션을 수정해야한다. 

커밋옵션을 클릭한다.

 

 

마지막 커밋 정정으로 바꾼다. 

그러면 의미 없는 커밋으로 자동으로 나올텐데

의미 있는 커밋으로 쓰고 커밋 눌러주면 된다.

 

 

 

 

 

그러면 의미없는 커밋이 사라진 상태로 의미있는 커밋을 넣을 수 있다. 

지금 설명한 것이 커밋 덮어쓰기 commit--amend하기 방법이다. 

 

 

 

이번엔 push--force 를 설명하겠다.

 

test 커밋 상태로 reset을 해보자. reset 하는 법은 이제 전에 많이 설명해서 딱히 설명은 필요없을듯 하다.

 

 

reset을 하면 이런상태가 된다. 

 

 

 

 

 

 

이상태에서 다시 의미없는 내용 1을 넣어보자

 

 

 

 

스테이지에 올리고 커밋하여

 

 

 

 

 

이상태로 만들자.

 

그런데 이 쓸데없는 의미없는 내용을 push 했다고 생각해보자.

 

 

 

그러면 이렇게 origin에 test라는 것이 생겨난다.

 

만약 이 상태에서 커밋을 수정하면?

 

 

 

그리고 스테이지에 올리고

 

 

아까 처럼 마지막 커밋 정정 누르고 의미있는 커밋이라고 써주고 커밋을 하면?

 

 

 

 

 

이런식으로 생겨버린다. 

 

이런 경우는  우측 상단에 terminal을 들어간다.

 

그리고는 

 

 

 

이렇게 적어준다. 

 

 

 

그러면 요런식으로 나온다. 

 

 

그러면 이렇게 의미 없는 커밋은 지워지고 의미있는 커밋만이 남게된다. 

 

 

그래서 임시커밋은 애초에 서버에 보내면 안된다.

 

이제 stash를 설명할텐데 그러기 위해서 원래대로 돌아가겠다. 

 

 

test 브랜치를 삭제해준다. 

 

그래도 origin/test가 남아있을텐데

 

origin/test부분 선택 - 우클릭 - 브랜치 - 브랜치삭제 - origin/test 선택 - 브랜치삭제

 

 

이번엔 test2를 만들어 보겠다.

 

print("커밋1")을 추가해주자. 

 

 

 

 

 

 

커밋 해주자.

 

 

 

 

의미없는 내용을 추가해보자.

 

 

그러면 이렇게 커밋하지 않은 변경사항이 생긴다. 

 

이 경우에 main을 checkout할 수 없다.

 

이때

 

여기 스태시가 있는데 이걸 클릭한다. 

 

 

 

 

임시 작업1 이라고 치고 '확인'

 

 

어라??? 커밋하지않은 내용이 사라졌다!

 

의미 없는 내용이 사라진 것이다. 

 

 

 

 

대신에 스태시라는 곳에 저장되어 있다.

 

그리고 다시 열심히 작업하고

 

스태시를 다시 불러올 수도 있다.

 

 

임시 작업1을 우클릭 - 스태시 적용

 

 

확인

 

다시 나타났다. 

 

이걸 다시 의미 있는 내용으로 바꿔보자.

 

 

 

 

이제 의미 있는 내용으로 바뀌었으니 커밋을 정상적으로 해도 좋다.

 

 

 

 

 

 

근데 주의사항이 있다.

 

아직 git에 없는 새롭게 만든 파일의 경우 stash를 사용할 수 없다.

 

New test.py라는 파일을 새롭게 만들었다면, New test.py는 stash를 적용할 수 없다는 말이다.

 

대신에 이 경우는 스테이지에 올려야만 stash를 적용할 수 있다. 

 

 

stash에 저장해놨던 내용이 아예 불필요하다면

 

여기서 스태시 삭제를 누르면 된다.

 

stash는 임시 저장소이기 때문에 프로젝트에서 그 활용도가 매우 좋다.

 

stash 꼭 기억하자