혼자 적어보는 노트

Git commit 합치기 / git rebase error / git stash error 본문

기타

Git commit 합치기 / git rebase error / git stash error

jinist 2022. 1. 9. 06:59

커밋을 엄청 뭉텅이로 하다가

git을 잘 다루어보자 라는 마음으로 커밋을 나누어서 하고 있던 도중

중복되는 커밋을 한 것 같아서 최근에 올렸던 두개의 커밋을 합치고 싶었다.

git rebase -i HEAD~2

 

그런데 에러가 발생했다.

error: cannot rebase: Your index contains uncommitted changes.
error: Please commit or stash them.

 

커밋을 하지 않은 내용물들이 남아있으면 rebase가 안되는 모양이다.

commit을 하거나 stash를 하라는데

status에 남아있는 파일들은 일부러 커밋을 안한 것들이였다. (커밋하기 싫은 것들!)

 

커밋을 하기 싫다면 stash를 사용하면 된다고 한다.

 

git stash

stash 명령어를 사용 하던 작업들을 스택에 잠시 저장할 수 있다고 한다.

git stash

stash에 저장하고 나서 git status를 하면 비워져 있는 것을 확인할 수 있다.

* stash를 하면 마지막 commit후 수정한 것들이 임시 저장소로 가버린다.

 

git stash apply

stash apply 명령어를 사용하면 임시 저장소에서 다시 작업을 가져올 수 있다.

git stash apply //최근 stash 불러오기
git stash apply [stash 이름]
// ex) git stash apply stash@{0}

 

git stash drop

stash를 지우려면 stash drop 명령어를 사용한다. (stash에서 작업을 가져와도 저장소에는 계속 저장이 되어있다)

git stash drop //최근 stash 지우기
git stash drop [stash 이름]

 

git stash list

stash의 목록을 확인하려면 git stash list를 하면된다.

git stash list
stash@{0}: WIP on master: 8ad9d84 Add right column // 최근 stash
stash@{1}: WIP on master: 8ad9d84 Add right column

stash목록에서 stash의 이름 정보가 나오는데

임시저장소는 커밋 속에 저장이 되는 모양이다.

 

테스트를 하려고 stash를 한 후 .gitignore 파일을 수정 후 저장해버렸다.

그리고 stash apply로 stash 하기 전으로 돌리려고 했는데

수정된게 있다고 에러가 발생하고 돌려지지가 않았다.. 섬뜩

error: Your local changes to the following files would be overwritten by merge:
        .gitignore
Please commit your changes or stash them before you merge.
Aborting

위와 같은 에러가 발생하길래 무언가 변경이 된 것이 있어서 돌려지지가 않는가보다 하고

다시 git stash를 했는데 에러가 생겨서 이도저도 못하고 있었다..

 

내가 한 해결방법은 그냥 임시로 commit을 해버렸다.

그리고 git stash apply를 해서 되돌린 후에 commit한 것을 지웠다.

 

rebase 실행

stage가 깔끔해 졌으니

git rebase -i HEAD~2 실행 시 실행이 된다.

pick 38783bd Add global selected state
s 8ad9d84 Add right column

에디터 창이 뜨고 위와 같이 커밋 앞에 pick이라고 쓰여있는 부분을 s로 바꾸면

s로 적은것들이 pick으로 합쳐진다. :wp (저장후종료)

Comments