[Git] 안심하고 commit하자 reflog

2023. 1. 13. 23:05·개발/Git
반응형

아래 포스팅에서 자주 쓰는 명령어와 업무 flow를 정리해 보았다.

https://growing-dev101.tistory.com/20

 

[Git] 자주 쓰는 명령어

Git 자주 쓰는 명령어 내가 현업에서 Git을 사용하면서 자주 사용하는 순으로 나름대로 정리해 보았다. 실제로 더 디테일한 옵션을 사용하기도 하지만 아래 내용만으로도 대부분의 업무가 가능하

growing-dev101.tistory.com

 

터미널에서 Git을 잘 활용해서 복잡하게 얽힌 상황을 해결해야 할 때가 있고 또 그런 환경에서 실수하기 쉽다.

  • GitHub에서 원격 저장소가 여러 개이고 Fork 된 저장소까지 있다면 단순 작업을 하더라도 실수할 소지가 많다.
  • Merge나 Rebase가 제대로 되지 않아, 원격 저장소와 로컬 저장소의 상태가 많이 꼬여있는 경우
  • 실수로 작업했던 commit들을 git reset --hard로 날려버린 경우 등

이렇게 복잡한 상황이 오면, 그냥 다시 clone 받거나 reset 하여 다시 처음부터 작업하는 경우들이 있다.

나도 그랬고, Git에 익숙지 않으면 충분히 그럴 수 있다.

 

이럴 때 매우 유용한 명령어인 Git reflog를 소개한다.

 

Git이 강력한 이유는 바로 파일의 변경 히스토리를 저장한다는 것이다. 즉 기본 파일의 상태가 있고 변화할 때마다 변경점을 기록하여 저장하고 있다는 것이다. 이 히스토리를 따라가면 결국 어떤 시점의 파일 상태가 된다.

 

내가 Git 명령어로 수행을 하는 시점의 상태는 저장되어 있고 이것을 Git reflog를 통해 확인할 수 있다.

 

아래는 3가지의 상태 변화를 나타내주고 있다.

git reset 명령어를 통해 특정 상태로 강제 변환이 된다.

git reset --hard [commit id]

다시 git reflog를 해보면, log가 하나 더 쌓이고, 쌓인 로그의 상태가 기존 3d3d6d9와 동일함을 알 수 있다.

그리고 git log를 해보면 해당 commit의 상태인 Initial commit 상태로 HEAD가 변경되어 있음을 알 수 있다.

 

결론

Git의 강력함은 바로 여기서 나온다.

reflog가 있으니 복잡하다고 두려워하지 말고 commit, reset 하자.

'개발 > Git' 카테고리의 다른 글

[Git] GitHub fork와 upstream을 활용한 안전한 Pull Request  (0) 2023.02.04
[Git] Rebase와 Merge의 차이 by Visualizing-git  (0) 2023.02.02
[Git] 자주 쓰는 명령어, 익숙해지자  (0) 2023.01.13
[Git] GitHub vs Gerrit  (0) 2023.01.09
[Git] 좋은 commit message 작성  (0) 2023.01.08
'개발/Git' 카테고리의 다른 글
  • [Git] GitHub fork와 upstream을 활용한 안전한 Pull Request
  • [Git] Rebase와 Merge의 차이 by Visualizing-git
  • [Git] 자주 쓰는 명령어, 익숙해지자
  • [Git] GitHub vs Gerrit
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아 N
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    하이볼
    Python
    OPIC
    CMake
    오블완
    소프티어
    Clang
    프로그래머스
    TDD
    키즈카페
    티스토리챌린지
    C++
    오픽
    필스너
    WSL
    git
    앨리웨이
    dfs
    생산성
    VS Code
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[Git] 안심하고 commit하자 reflog
상단으로

티스토리툴바