git reset과 git checkout은 무엇이 다른가요?

3192 단어 Git
안녕하세요.
요전날 타이틀의 2개의 차이를 몰랐기 때문에, 여러가지 조사했다.
실무로 사용한 적이 없기 때문에, 어긋남은 정직할지도 모르지만, 지금의 이해를 정리하는 장소로 한다.
또, 엉망이 없도록, 단적으로를 의식적으로 기술하고 있다.

어디에서 사용합니까?



이 2개의 커맨드는 「인덱스나 워크 트리의 ①무언가를 ②무언가의 상태로 되돌릴 때」에 사용된다.

①과 ②는 각각 아래의 후보가 나온다.


- 특정 파일
- 모든 파일


- HEAD or 인덱스
- 과거 커밋

각 명령을 git help에서 보면



git reset --help


NAME
       git-reset - Reset current HEAD to the specified state

SYNOPSIS
       git reset [-q] [<tree-ish>] [--] <pathspec>...
       git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
       git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>...]
       git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

DESCRIPTION
       In the first three forms, copy entries from <tree-ish> to the index. In the last form, set the
       current branch head (HEAD) to <commit>, optionally modifying index and working tree to match. The
       <tree-ish>/<commit> defaults to HEAD in all forms.

요약하면
  • HEAD에서 인덱스로 복사하고 선택적으로 작업 트리로 복사합니다.
  • HEAD를 지정된 커밋으로 이동하고 선택적으로 대상 커밋에서 인덱스 및 작업 트리로 복사합니다.

  • 보다 간단하게 말하면, 지금의 HEAD를 특정된 상태로 이동해, 그것을 선택적으로 인덱스와 워크 트리에 카피한다.
    옵션이란?
  • --hard : 인덱스와 워크 트리에 반영 (지금 있는 파일이 지정된 HEAD에 동기화되기 때문에 주의)
  • --mixed(default) : 인덱스에만 반영
  • --soft : 반영하지 않는다. (HEAD 만 움직입니다.)

  • git checkout --help


    NAME
           git-checkout - Switch branches or restore working tree files
    
    SYNOPSIS
           git checkout [-q] [-f] [-m] [<branch>]
           git checkout [-q] [-f] [-m] --detach [<branch>]
           git checkout [-q] [-f] [-m] [--detach] <commit>
           git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
           git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...
           git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]
           git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
    
    DESCRIPTION
           Updates files in the working tree to match the version in the index or the specified tree. If no
           pathspec was given, git checkout will also update HEAD to set the specified branch as the current
           branch.
    

    요약하면

  • 워크 트리의 파일을 인덱스, 그 외는 지정된 커밋의 버젼과 일치시킨다.

  • 차이 키워드


  • reset

  • 과거 커밋에서 반영 할 때
  • 색인만 변경

  • checkout
  • 작업 트리까지 변경합니다.
  • 워크 트리 인덱스 HEAD의 세 가지를 일치시킵니다.
  • 과거의 커밋으로부터의 상태를 「시험하고 싶을 때」.
  • 브랜치에 영향을 주고 싶지 않을 때.



  • 그림으로 요약





    여기까지 이해하면, 나머지는 실천 있는 것 뿐이라고 나는 느끼고 있다.
    향후 실무로 갱신점이 있으면 수시로 가고자 한다.
    실무로 사용하고 있는 분으로 꼭 다른 장소나, 어드바이스가 있으면 받고 싶다.

    이상.

    좋은 웹페이지 즐겨찾기