블로그 메뉴

    Tonkatsu
    Developer Lee
    Tonkatsu
    전체 방문자
    오늘
    어제
    • 분류 전체보기 (52)
      • Frontend (7)
        • React (3)
        • JavaScript (3)
        • HTML\CSS (1)
        • etc (0)
      • Backend (0)
        • Python\Django (0)
        • etc (0)
      • CS (32)
        • Algorithm\Coding Test (19)
        • Computer Science (8)
        • devops (5)
        • etc (0)
      • Languages (5)
        • Javascript (5)
        • Python (0)
        • etc (0)
      • 비상다반 (3)
      • 학원 (4)

    인기 글

    태그

    • 코테
    • merge
    • leetcode
    • 프로그래머스
    • javascript
    • 프론트엔드
    • CS
    • DFS
    • fetch
    • 리트코드
    • 자바스크립트
    • Push
    • Git
    • HTML
    • 백준
    • 네트워크
    • CSS
    • 코딩테스트
    • BFS
    • js

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Tonkatsu

    Developer Lee

    git-reset : 되돌리기
    CS/devops

    git-reset : 되돌리기

    2022. 1. 6. 13:04

     

    git 을 사용하다 여러가지 이유로 뒤에서 작업하던 버전으로 돌아가야 할 때가 있다.

    오류가 일어났을 수도 있고 이전 버전에서 분기를 해야할 수도 있고 혹은 새 버전을 어떤 이유로든 사용하지 않을 수도 있을 것이다.

     

    그럴때 사용하는 것이 git reset이다.

    git reset은 이전에 만들어진 git log 로 이동하여 작업을 수행할 수 있게 해준다.

     

    먼저 git log를 통해 commit 기록을 보면 다음과 같다.

     

     

     

    가장 위 버전이 최신 commit이므로 바로 전 commit으로 이동하는 경우를 보겠다.

     

    git reset은 크게 보면 

     

    git reset {commit log}
    
    git reset --soft {commit log}
     
    git reset --hard {commit log}

     

    의 3가지 버전이 있다.

     

    git reset

     

    가장 먼저 git reset은 커밋 이후의 변경사항들이 사라지지 않고 Unstaged changes로 들어간다.

     

     

    즉 파일의 내용은 바뀌지 않고 그냥 git의 위치만 바뀌는 것이다.

     

    git log를 보면 HEAD가 한 단계 전으로 설정되어 있는 것을 볼 수 있다.

    git commit의 단계는 전으로 돌아갔지만, 로컬 파일의 내용은 바뀌지 않았으므로 이 상태에서 git add, git commit을 진행하면 다시 원 상태로 돌아올 것이다.

     

    git reset --soft

     

    git reset --soft는 git reset과 거의 동일하지만 커밋 이후의 변경사항이 Unstaged가 아니라 Staged로 돌아간다는 차이점이 있다.

     

     

    나머지는 git reset과 동일하다.

     

    git reset --hard

     

    git reset --hard는 commit만 돌리는 것이 아니라 아예 파일의 내용도 이전으로 돌려버린다.

    따라서 굉장히 조심스럽게 사용해야 한다.

     

     

    따라서 로컬의 파일 내용도 모두 바뀌고 변경사항이 존재하지 않는다.

     

    * git reset을 사용할 때 git log로 정확한 id 값을 줄수도 있지만 git reset HEAD ~1 로 몇 단계 전으로 돌아가는 것 역시 가능하다.(1대신 돌아가고 싶은 숫자를 넣으면 된다.)

    저작자표시 (새창열림)

    'CS > devops' 카테고리의 다른 글

    git flow-다른 fork에서 fetch merge하기  (0) 2021.11.30
    git-git flow 사용하기  (0) 2021.11.26
    git-commit convention  (0) 2021.11.25
    git-개인 repo clone, add, commit, push  (2) 2021.11.24
      'CS/devops' 카테고리의 다른 글
      • git flow-다른 fork에서 fetch merge하기
      • git-git flow 사용하기
      • git-commit convention
      • git-개인 repo clone, add, commit, push
      Tonkatsu
      Tonkatsu
      한 번 뿐인 인생 편하게 살고싶지만 그러려면 열심히 살아야 되니까 열심히 살려고 노력은 하지만 편하게 사는 사람

      티스토리툴바