본문 바로가기

DevOps/Git

[Git] stash와 amend 가이드: 작업 임시저장과 커밋 수정하기

 

1. Stash

 

개인적으로 stash 는 제가 제일 좋아하는 명령어중 하나입니다.

작업 중 급하게 다른 일을 먼저 해야하는 경우, 임시보관하는 명령어입니다.

git stash 현 작업들 임시저장 끝에 save 생략
git stash apply 임시저장한 마지막 항목(번호 없을 시) 적용 끝에 번호로 항목 지정 가능
git stash drop 임시저장한 마지막 항목(번호 없을 시) 삭제 끝에 번호로 항목 지정 가능
git stash pop 임시저장한 마지막 항목(번호 없을 시) 적용 및 삭제 apply + drop
💡 git stash branch (브랜치명) 새 브랜치를 생성하여 pop 충돌사항이 있는 상황 등에 유용
git stash clear 임시저장한 모든 항목들 비우기

 

# 스태시 목록 확인
git stash list

# 특정 스태시 내용 확인
git stash show stash@{번호}

# 결과 예시:
# stash@{0}: On main: 작업 메시지

# 메시지와 함께 스태시 저장
git stash save "작업 메시지"  # 예전 문법
git stash -m "작업 메시지"    # 새로운 문법
git stash push -m "작업 메시지"  # 이것도 동일

# 추적되지 않는 파일도 포함하여 스태시
git stash -u

 

2. amend

 

마지막 커밋 수정할 때 사용하며

커밋 메세지 변경이나 누락된 파일을 추가할 때 사용합니다.

 

git commit --amend

 

# 커밋 메시지만 수정할 경우
git commit --amend -m "새로운 커밋 메시지"

# 메시지 편집기 없이 마지막 커밋 수정
git commit --amend --no-edit

# 작성자 수정
git commit --amend --author="작성자 <이메일>"

 

단,  push한 커밋을 amend하면 안됩니다.  커밋 해시가 변경되고, 원격(remote)과 로컬의 히스토리가 달라져

팀원들과의 레포지토리가 꼬일 수 있기 때문에 이럴 때는새로운 커밋으로 수정사항 반영하시길 권장드립니다.