본문 바로가기

Development/TIL

git stash(생성, 삭제, 복구)

협업을 하다보면 내가 작성해놓은 코드를 커밋하기 전에 github repository에서 pull을 해야할 경우가 생긴다.

그럴경우엔 git stash 명령어를 사용하여 커밋을 하지 않고 임시 저장해두었다가

merge를 완료한 후에 불러와서 작업을 이어갈 수 있다.

 

오늘도 프로젝트의 organization repo에서 내 repo로  최신버전을 sync fork한 후

local에서 작업중이던 내용을 stash하고 remote repo를 pull해왔다.

그리고 stash apply를 이용해 임시 저장한 작업 내용을 불러왔다.

 

문제는 그 다음에 발생했다.

괜히 stash 기록을 깔끔하게 만들고 싶어서 stash drop을 이용해 list를 지웠더니

해당 stash에 적용되는 코드들이 전부 날아가버린 것이다.

잠깐 멘붕이 왔지만 구글링을 해보니 다행히 삭제한 stash를 되돌리는 방법이 있었다.

 

삭제된 stash list 가져오기

git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk

 

그런데 vscode에서는 명령어가 실행되지 않았다.

 

그래서 git bash를 사용해 실행했다.

노란색 commit 어쩌구 써진게 삭제된 stash의 Commit ID이다.

 

삭제된 stash 복구

이번엔 vscode의 터미널에서 실행해봤는데 정상 작동 되었다.

git update-ref refs/stash < Commit ID > -m "다시 저장할 Stash 이름"

 

그리고 git stash list를 실행하여 확인해보았다.

stash 인덱스 1번이 복구된 stash이다.

 

그럼 이제 git stash apply 명령어를 사용해 해당 stash를 불러와 작업을 계속 진행하면 된다!

 

 

 

https://gmlwjd9405.github.io/2018/05/18/git-stash.html

 

[Git] git stash 명령어 사용하기 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

 

https://circlezeroblog.tistory.com/2

 

[Git] 삭제한 Stash 복구하는 방법

Git 명령어를 통한 삭제된 Stash 복구 ▶ 삭제된 Stash List 가져오기 git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk ▶ 삭제된 Stash 복구시키기 git update-ref refs/stash < Commit ID > -m "

circlezeroblog.tistory.com

'Development > TIL' 카테고리의 다른 글

증분식 데이터 형상관리 : Increment Data Versioning  (0) 2023.06.03
TypeORM enum 타입 사용하기  (0) 2023.06.02
TypeORM Isolation Level  (0) 2023.05.30
Typeorm Transaction  (0) 2023.05.29
NestJS_Configuration  (0) 2023.05.26