본문 바로가기
Lecture/Git

[6-DAY] stash와 이전 커밋 확인

by 손프로 2022. 10. 3.

<교육을 들으며 혼자 정리한 내용으로 지식습득을 목적으로 읽기에는 정확하지 않은 정보가 있을 수 있음>

 

stash

내가 수정한 내용들을 임시공간에 저장하는 명령어

git stash로 저장하고 git stash pop명령어로 가져온다

git stash apply 명령어로도 동일하게 가져올 수 있으며 pop과의 차이는가져온 후 저장공간에서 삭제할 것인지 여부

(apply로 작업 시 저장공간에 그대로 남아있음)

 

스태시를 여러개로 작업할 수 있으며

git stash list 로 스태시목록 확인 후 git stash apply @stash{1} 로 원하는 변경사항을 가져올 수 있다

@stash{1}은 list로 확인가능, 내가 가져오려는 스태시의 아이디라고 보면 됨

 

git stash drop @stash{1}로 특정 변경사항을 삭제가능하고

git stash clear 로 스태시 전체 클리어 가능

-- 근데 실제로 작업할때 거의 git stash, git stash pop을 주로 사용한다고 함

 

이전 커밋 확인하기

작업할때 이전의 커밋내용을 확인하고 싶은 경우가 있을 수 있다

이 경우 git checkout 커밋해시 명령어를 이용하여 해당 커밋으로 이동가능하고

기존의 브랜치를 참조하는 head가 커밋을 참조하게 되며 분리된다

-- 커밋해시는 git log --oneline 명령어로 확인가능 이때 커밋해시는 7개만 나오는데 이거로 충분

 

이 상태에서 git switch -c name 명령어로 브랜치 생성하게되면 해당 커밋을 기준으로 새로운 브랜치가 따지며

다시 원래의 head로 돌아오려면 switch명령어로 브랜치를 이동하면 되고

팁으로 switch - 명령어 사용 시 최근 브랜치로 바로 돌아올 수 있다.

 

추가로 바로 한 단계 혹은 몇 단계전으로 돌아가고 싶다면

git log로 커밋해시를 확인할 필요없이 git checkout HEAD~1 과 같은 명령어로 단계별로 이동가능하다

-- ~를 마이너스로 생각하면 된다 ex) ~1은 한 단계, ~2는 두 단계

 

원하는 커밋으로 파일 내용 수정하기

특정시점의 커밋으로 파일내용을 수정하고 싶다면 git restore --store 커밋해시 를 이용하면된다

해당 명령어는 git checkout 커밋해시와 같이 head가 커밋을 참조하는 것이 아닌

단순히 파일 내용만 그 시점의 커밋내용과 동일하게 수정된다

 

커밋 삭제

원하지 않는 브랜치에 커밋을 할 경우, 커밋 내용이 잘못된 경우 삭제가 필요할 수 있는데

명령어는 git reset 혹은 git revert를 사용한다

git reset 커밋해시 명령어는 해당 커밋 이후의 모든 명령어를 삭제하고 로컬의 수정사항은 그대로 남겨져있다

로컬도 함께 삭제를 원할 시 git reset --hard 커밋해시 로 hard옵션을 추가해주면된다.

 

git revert 커밋해시 명령어는 협업을 위해 조금 다르게 동작하는데

위의 git reset이 커밋을 아예 삭제 시켜버리는 거라면 git revert는 새로운 커밋을 만들어

해당 커밋에 지정한 커밋의 수정사항을 삭제한다

 

예를 들어 다른 사람이 내 커밋 1과 2를 이어서 작업을 하고 있는데

git reset으로 해당 커밋을 없애버리면 협업을 하던 사람들에게 피해가 갈 수 있다

하지만 git revert는 커밋들은 다 남겨놓고 지정한 커밋의 내용만 없앤 후 새로 커밋을 만들기 때문에

이런 상황을 방지할 수 있다.

'Lecture > Git' 카테고리의 다른 글

[8-DAY] github  (0) 2022.10.04
[7-DAY] github ssh 설정  (0) 2022.10.03
[5-DAY] merge  (0) 2022.09.26
[4-DAY] branch  (0) 2022.09.25
[3-DAY] 깃 명령어 옵션과 gitignore  (0) 2022.09.21

댓글