티스토리 뷰

Git

10. 복구

prprme 2021. 1. 17. 03:41

복구

특정 시점으로 되돌리며, 그 동안의 커밋을 무효화

 

리셋 | reset

- 커밋을 기준으로 이전 코드로 되돌아가는 방법

- 저장소가 공개되었거나 공유하고 있는 경우 리셋이 혼란을 야기할 수 있음.

[1] git reset --soft [커밋ID]
[2] git reset --mixed [커밋ID]
[3] git reset --hard [커밋ID]

- [1] 스테이지 영역의 상태로 되돌림 즉, 작업을 하고 add한 상태

- [2] git reset의 default 옵션으로, 워킹 디렉토리 상태로 되돌림 즉, 작업만 하고 add하지 않은 상태

- [3] 모든 내용 초기화

 

커밋 합치기

- git reset을 응용한 커밋 합치시

- 세개의 커밋 확인 (git log --oneline)

- 2단계 전 상태로 리셋

- 2단계 전 상태로 돌아감

- 커밋 후

 

그 외의 리셋

[1] git reset [파일 이름]
[2] git reset --merge HEAD~

- [1] stage상태의 파일을 unstage상태로 리셋

- [2] 방금 전 병합 커밋 리셋하여 취소

 

 

리버트 | revert

- 이전의 커밋 내역은 남겨 놓은 상태로 취소에 대한 커밋을 새로 남김

[1] git revert [커밋ID]
[2] git revert [커밋ID .. 커밋ID]

- revert를 하면 이처럼 revert했다는 내역이 남음 

 

병합 취소

git revert --mainline 숫자 [취소할 병합커밋ID]

- reset이 직전 병합 커밋만 취소할 수 있었다면, revert는 시간이 지난 후 과거의 병합도 선택하여 취소할 수 있음

- mainline은 병합 취소 후 체크아웃될 브랜치 커밋 위치(번호)
   = delete next text : 3번

   = delete 1 : 2번

   = rewrite text : 1번

- 병합 커밋(2530344)를 리버트하고 2번 커밋을 했던 상태로 되돌아감.

- 리베이스 같은 경우 공통 조상 파악이 힘들어 리버트 적용이 어려움.

- 저장소를 공개했다면 리셋보다는 리버트가 유용함.

'Git' 카테고리의 다른 글

9. rebase 병합  (0) 2021.01.17
8. 병합과 충돌  (0) 2021.01.17
7. 스태시(임시 저장)  (0) 2021.01.16
6. 원격 브랜치  (0) 2021.01.16
5. 브랜치  (0) 2021.01.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함