[git] git stash, squash, rebase

김종원·2021년 8월 5일
0

[git]

목록 보기
1/9
post-thumbnail

git stash 변경사항을 임시로 저장할 수 있도록 도와주는 기능입니다.

커밋 전 코드를 열심히 작성하던 중 갑작스럽게 코드 수정 요청이 들어올 경우
변경사항 전체를 리셋하거나, 저장소를 하나 더 클론하거나 작업 내용을 전체 코드를 커밋해야 했습니다.
하지만 나중에 rebase하고 정리하려면 일을 두번하게 됩니다.
이럴 때 git stash 명령어로 변경사항을 임시 저장하고 나중에 다시 불러 올 수 있습니다.

$ git stash save

git stash save는 현재 작업을 일시적으로 저장해두고 싶을때 사용합니다.
save는 생략가능 합니다..
save 뒤에 내용을 나타내는 메시지를 지정할 수 있습니다.

$ git stash list

git stash list는 일시적으로 저장해 둔 작업 목록을 확인하고 싶을 때 사용합니다.

$ git stash pop

git stash pop은 일시적으로 저장해 둔 작업을 되돌릴 때 사용합니다.
인수를 지정하지 않으면 저장된 작업 목록 중 가장 최근으로 저장된 작업을 복원합니다.
인수(ex) stash1_1)를 지정하면 특정 작업을 선택하여 복원할 수 있습니다.

$ git stash drop

git stash drop은 일시적으로 저장해 둔 작업을 삭제하고 싶을 때 사용합니다.
인수를 지정하지 않으면 저장된 작업 목록 중 가장 최근으로 저장된 작업을 삭제합니다.
인수(ex) stash1_1)를 지정하면 특정 작업을 선택하여 삭제할 수 있습니다.

$ git stash clear

일시적으로 저장해 둔 모든 작업을 삭제할 때 사용합니다.

링크텍스트

git squash는 여러번 커밋한 이력을 하나의 커밋 이력으로 만드는데 사용합니다.

프로젝트를 하다보면
소스코드를 수정할 때 보통 하나의 이슈를 만들고 그 이슈를 기준으로 브랜치를 만듭니다.

그리고 브랜치에 수정한 내용을 Commit합니다.

하지만 보통 커밋 한번에 모든 것을 수정할 수 없을 때가 있습니다.

한 이슈를 수정하기 위해 여러 커밋이 발생하게 됩니다.

이렇게 생성된 여러 커밋을 그냥 병합(Merge)해도 되지만 오픈 소스나, 여러 사람이 같이 작업하는 회사 소스코드인 경우 커밋 이력이 많아지고 복잡해져서 커밋 이력을 추적하는 것이 힘들어지게 됩니다.

이것을 위해 git squash를 사용합니다!

git squash을 사용해서 여러 커밋을 하나의 커밋으로 만들려면 git의 rebase 명령어를 사용해야 합니다.

git rebase

git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 Merge와 Rebase있습니다.

git-merge : Join two or more development histories together.
git-rebase : Forward-port local commits to the updated upstream head.

profile
발전하기위한 기록

0개의 댓글