커밋 덮어쓰기(commit --amend)와 스태시(stash)
갑작스럽게 체크아웃이 필요하다면 어떻게 해야할까?
내가 현재 작업 중인 브랜치에서 작업 내용이 아직 완료되지 않았고,
협업으로 인해 반드시 다른 브랜치로 이동하여서 급하게 핫픽스 등 다른 작업을 수행해야한다면?
테스트를 위해 임의의 진행 상황을 만들어보자.
내가 작업하던 test 브랜치에서 작업물을 아지 커밋하지 않았다.
이 상태에서 main 브랜치로 돌아가면?
에러가 발생한다.
브랜치를 만들고 체크아웃을 통해 변경하려고 하면 현재 작업 디렉토리가 깨끗해야한다.
이러한 경우 '임시 저장' 기능을 떠올리기 마련이다.
git 에서의 임시 저장을 알아보자.
😎 커밋 덮어쓰기 (commit --amend)
급하게 다른 브랜치에서 작업을 해야하는 경우 작업중이던 내용을 임시 저장해야한다.
작업 중이던 내용이 미완성 단계이긴 하지만 급한대로 커밋을 통해 임시 저장시킨다.
이렇게되면 쓸데없는 커밋 로그가 남는다는 문제점이 있다.
다시 작업을 이어나가고 커밋 기록을 삭제하기 위해서 커밋 덮어쓰기를 사용할 수 있다.
커밋되어있는 내용은 신경쓰지 말고 작업을 마무리시킨 후 커밋할 때 커밋 옵션에서 마지막 커밋 정정을 한다.
이렇게 커밋을 덮어쓰게 되면 이전 커밋은 남지 않고 새로운 커밋이 남게된다.
이번엔 강제푸시가 필요한 상황을 보자,
test 브랜치의 작업 내용을 원격 저장소로 푸시한 상태이다.
test 브랜치에서 작업을 하고 마지막 커밋 수정을 하게 되면?
현재 나는 제일 최근에 커밋한 내용을 최종본으로 사용하고 싶다.
이런 상황이라면 최근에 커밋한 수정 내용을 저장소에 푸시해야되기 때문에 강제 푸시해야한다.
😎 Stash 사용하기
stash를 사용하면 커밋하지 않은 변경사항을 불필요하게 커밋할 필요없이 임시 저장이 가능하다.
작업 중인 내용이 있기 때문에 소스트리에서는 커밋 해야할 내용이 있다고 알려준다.
이 때 커밋하지 않고 스태시에 저장할 수 있다.
다른 브랜치에서의 작업이 끝나고, 스태시에 저장한 작업을 이어서 하고 싶으면 쉽게 불러올 수 있다.
그런데 한가지 주의사항이 있다
새로운 파일을 생성하여 작업한, 스테이지에 한 번도 올라가지 않은 파일은 스태시를 사용할 수 없다.
이럴 땐 스테이지에 올리면 스태시가 가능해진다.