Notice
Recent Posts
Link
Tags
- sql
- Django
- nginx
- 데이터베이스
- ORM
- join
- springboot
- 프로그래머스
- Docker
- java
- hibernate
- 스프링
- AWS
- spring mvc
- 스프링부트
- static
- 자바
- spring security 6
- 1차원 배열
- jpa
- string
- select
- DI
- spring
- PYTHON
- SSL
- @transactional
- 문자열
- mysql
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Archives
개발하는 자몽
[Git] 사라진 커밋(commit) 복원하기 본문
깃에서 rebase를 하다가 커밋이 사라졌다. (사라졌다 == git log를 입력했을 때 보이지 않음)
하나도 아니고 한 4개가 순식간에 사라져서 그동안 작업한 코드가 디렉토리에서 아예 사라졌었다. 심지어 local에서 remote로 push 한 것도 아니어서 당황했다. 침착하게 구글링을 해보니 역시! 방법이 있었다! 고마워요 깃을 사용하는 수많은 개발자분들...!
아래 명령어를 입력해보자.
git reflog
참고 reflog는 reference logs이다.
해당 명령어를 실행하면 git log를 입력했을 때 보이지 않던 커밋들도 나타난다. 이 내역에서 사라진 커밋을 찾고 해당 커밋의 commitID를 찾아야 한다.
commitID를 찾았다면 아래 명령어를 입력하여 다시 저장소로 가져오자. 나의 경우 사라진 4개의 커밋 중 가장 먼저 커밋된 것의 ID를 입력했다.
git reset --hard commitID
입력하면 해당 ID를 기준으로 사라진 최근 커밋까지 복원된다.
이렇게 다시 가져오면 이전에 local에서 작업한 브랜치로 가져오는 것이 아닌, 사라진 커밋을 HEAD로 하는 tree에 합류된다.
사라진 커밋을 현재 브랜치로 가져오려면 아래 명령어를 입력하자.
git cherry-pick commitID
참고1 tree: 파일 묶음
참고2 HEAD: 트리, 마지막 커밋 스냅샷, 현재 브랜치를 가리키는 포인터
참고3 git reset: 이전 커밋으로 되돌림. 단, remote에 올라가 코드 공유를 하지 않았을 때 사용 가능.
참고4 git cherry-pick: 다른 브랜치에 있는 커밋을 내 브랜치에 적용시킴
출처
'Git' 카테고리의 다른 글
[Git] 서브 모듈을 포함한 레포지토리 클론하기 (0) | 2024.02.09 |
---|---|
[Git Error] fatal: It seems that there is already a rebase-merge directory, ... (0) | 2023.04.15 |
[Git] remote에 push한 파일 삭제 (0) | 2022.11.01 |
[Git] .gitignore 적용 안되는 경우 (0) | 2022.10.31 |
IntelliJ Git 연동 (0) | 2022.09.14 |
Comments