Git의 기록 갱신 | git reflog

git reflog 명령

Git에서는 reflog라는 기능이 작동 분기 끝의 업데이트를 추적 할 수 있습니다. 그러면 어떠한 지점에서도 어떠한 태그도 참조되지 않은 업데이트 내용도 그 시점으로 돌아갈 수 있습니다. 기록을 갱신 한 후에는 심지어 reflog는 지점의 과거 상태가 기록되어 있으며, 필요한 경우에는 거기에 돌아갈 수 있습니다.

사용법

git reflog

로컬 저장소의 reflog를 표시하는 명령입니다.

git reflog --relative-date

상대 날짜 형식 (예 : 2 주 전)에서 reflog를 표시하는 명령입니다.

보충 설명

현재 HEAD에서 업데이트 (지점 전환, 새롭게 변경된 내용의 차와 기록 갱신 아니면 그냥 새 커밋의 실행 등)이 추가 될 때마다 reflog에 새로운 항목이 추가됩니다.

사용 예

git reflog 의 이해를 돕기 위해 하나의 예를 살펴 보자.

0a2e358 HEAD@{0}: reset: moving to HEAD~2
0254ea7 HEAD@{1}: checkout: moving from 2.2 to master
c10f740 HEAD@{2}: checkout: moving from master to 2.2

위의 reflog는 먼저 master에서 “2.2"라는 이름의 브랜치에 체크 아웃이 만들어진 다음 master 다시 있습니다. 그래서 hard 플래그를 지정한 취소하고 오래된 커밋으로 이동하고 있습니다. reflog는 가장 새로운 로그가 위에 표시되고 HEAD @ {0} 라는 레이블이 부여됩니다.

취소가 의도하지 않은 것이었다하더라도 2 개의 커밋을 취소하기 전에 (0254ea7)을 점하고 있던 커밋의 원래 정보가 reflog에 남아 있습니다.

git reset --hard 0254ea7

따라서, git reset 명령을 사용하여 master를 과거에 존재 한 커밋 취소 할 수 있습니다. 여기에는 기록 오 다시에 대한 안전망의 역할이 있습니다.

또한 변경이 로컬 저장소에 커밋 된 경우는 reflog가 유일한 안전망임을 또한 reflog는 HEAD의 이동을 기록하고있을뿐임을 명심하십시오.




최종 수정 : 2021-08-26