이클립스에서 git checkout하여 branch를 바꿔주려고 했는데 Confilcts(충돌)이 났습니다.
commit은 안되고 stash는 뭘까 고민중이며...
이 코드가 어느 기준으로 commit되는지 판단이 되지 않기도 하며,
git stash를 명령어에 대해 알고서 대응하고자 작성한 글입니다.
이클립스 대신 vscode를 통해 git 명령어를 테스트했습니다.
git stash는 변경사항을 임시로 저장할 수 있도록 도와주는 기능.
예를 들어,
git 저장소에서 코드 작업을 하고 있는 상황을 가정해보겠습니다.
코드를 열심히 수정하던 중인데 아직 커밋은 하지 않았습니다. 갑작스럽게 핫픽스(긴급수정) 요청이 들어옵니다.
이럴 때 떠오르는 방안은 ?
1. 변경사항 전체를 하드 리셋 -> 기존 수정 코드는 BYE~
2. 저장소를 하나 더 클론 받아오기 -> 안정적이지만 큰 프로젝트나 너무 작은 부분만 수정해야 할 때는..?
3. 작업 내용을 보존하기 위해서 급하게 코드 전체를 커밋 -> 코드가 꼬일 확률이 높아질 우려가..?
git stash 명령어 설명
git stash | 변경사항을 임시로 저장하는 명령어 |
git stash pop | 저장한 임시 변경 사항을 꺼내오는 명령어 |
git stash -m "메세지" | 변경사항을 임시로 저장할 때 메시지도 함께 저장하는 명령어 |
stash는 기본적으로 스택처럼 동작합니다.
git stash로 변경사항을 쌓아놓고, pop으로 가장 최근에 저장한 변경사항을 꺼내고 그 내용은 삭제해버립니다.
git stash 테스트
대충 개념을 알아봤으니, 테스트하여 실제 동작 원리를 확인 해보도록 하겠습니다.
세 개의 파일이 있습니다. 세 개의 파일은 모두 수정 상태이며,
그 중 add1.txt파일만 git add처리 되어 있는 상황이라고 가정 해봅니다.
아래 gitstatus를 통해 위와 같은 상황을 만들어줍니다.
이 상태에서
git stash
git stash 명령어 쓰고 엔터하면, 마지막으로 로컬에 pull 되어 있던 상태로 바꿔줍니다.(아래 이미지 빨간 박스 참고)
그렇기 때문에 working tree도 깔끔해진 것을 git status를 통해 확인 할 수 있습니다.
그리고 vscode를 사용한다면 git graph를 확인하면 stash 처리 된 부분을 확인 할 수 있습니다.
그리고 git stash pop 할 경우, 스테이지 상태까지 유지되지 않음을 알 수 있다.
추가적으로 git stash에 메세지를 남기고 싶을 땐 commit 메세지 남기는 것과 동일하게 git stash 명령 뒤에 -m을 붙여서 메세지를 작성하면 됩니다.
git stash -m "남길 문구 작성"
vscode graph를 확인했을 때, 메세지가 같이 저장 됨을 확인 할 수 있습니다.
또한 git stash는 스택처럼 쌓이기 때문에 git stash list를 통해 git stash 임시 저장한 리스트를 확인 할 수 있습니다.
git stash는 스택처럼 동작하기 때문에
*스택 -> 리스트의 한쪽 끝에서 자료의 삽입과 삭제가 이루어지는 자료 구조
가장 최근에 들어온 자료가 가장 먼저나가게 되는 LIFO 형태
git stash drop시 마지막으로 추가 했던 항목이 삭제된 것을 확인 할 수 있습니다.
더 많은 시나리오를 구성하여 stash를 사용하여, 잘 활용하면 hotfix 요청 시 대응하기에 수월 할 것으로 여겨집니다.
'etc.' 카테고리의 다른 글
[보안] ClamAV 리눅스 백신 (0) | 2023.10.16 |
---|---|
[보안개발] XSS 방지란? 방어? (0) | 2023.07.07 |
[리눅스] SNMP 망 관리 프로토콜 (0) | 2023.05.09 |
Spring + NextJS 개발환경 연동할 때 생기는 이슈! (1) | 2022.11.25 |
웹 브라우저에서 임시로 화면 변경하기 / 디자인 모드 Design Mode ? (0) | 2022.07.18 |
댓글