git checkout은 여러 가지 의미가 너무 많지 않아?

계기



이전 기사( 「이런 일하고 싶다」라고 때때로 어떤 git 커멘드 사용하면 좋은 것인가? )를 쓸 때,
커맨드에 대해서 아래 그림과 같은 그림을 하고 정리하고 있었습니다만


git checkout 라는 상황/조건에 따라 거동이 너무 많지 않아?

※덧붙여서 그림 그리는 도중에 같은 것을 공식이 치트 시트 로서 준비하고 있는 것을 깨달았습니다...

git checkout의 행동 정리



브랜치 이름을 지정한 경우




로컬 브랜치에 존재
원격 추적 브랜치에 존재
git checkout의 거동


×
×
브랜치를 잘라내다

×

원격에서 지점을 로컬 리포지토리로 가져옵니다.



참조할 로컬 브랜치 간 전환


파일명을 지정한 경우



작업 트리에서 지정한 파일의 편집 내용을 로컬 분기의 내용으로 되돌립니다.

체크 아웃이라는 이름의 범위를 벗어나지 않았습니까?



브랜치를 잘라내거나 브랜치를 전환하거나 파일 편집 내용을 바탕으로 되돌리거나
체크 아웃이라는 이름을 붙이고 있지만, 실제로는 어떤 의미하고 싶은 무제한의 명령이되어있는 인상이 강합니다.

(svn을 쭉 만지고 있었던 적도 있다) 체크아웃이란, 「리포지토리로부터 무엇인가를 가져온다」 것이라고 생각하고 있었기 때문에, git를 접하기 시작했을 때에 「???」가 된 포인트의 하나였다

새로운 공식을 보면 새로운 명령이 추가되었습니다.



이 하고 싶은 마음대로의 git checkout 에 대해서 git 공식 를 읽고 있으면 마지막 see also 에 그것 같은 이름의 커멘드가 쓰여졌습니다.


명령
내용

git switchSwitch branches(브랜치 전환)
git restoreRestore working tree files(작업 트리에서 파일 복원)


아무래도 작년(2019년)의 8월의 업데이트 2.23.0에서 추가된 커맨드인 것 같습니다.
※사용하고 있던 git가 2.21.?이었기 때문에 눈치채지 않았습니다…

새 명령을 포함하여 역할을 재정리합시다.




하고 싶은 일
사용하는 명령


브랜치 잘라내기git branch
브랜치 획득git checkout
브랜치 전환git switch
파일 복원/편집 내용 취소git restore

이후 이런 느낌으로 정리해 명령을 이해해 두면 이상한 일도 없지?
라고 생각했지만git switchgit restore 의 DESCRIPTION에 이런 기재가 있었습니다

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.
  • 이것은 실험적인 명령이므로 행동이 바뀔 수 있습니다

  • 결론




    하고 싶은 일
    사용하는 명령


    브랜치 잘라내기git branch
    브랜치 획득git checkout
    브랜치 전환
    git checkout git switch
    파일 복원/편집 내용 취소
    git checkout git restore

  • 명령의 역할 분담적으로 생각해, 적어도 브랜치 잘라내기는 git branch 로 좋다고 생각한다
  • 브랜치 전환, 파일 복원은 새로운 커맨드( git switchgit restore )가 준비되어 있지만, 변경될 가능성이 있으므로 잠시는 모습 봐 git checkout 를 계속 사용하는 쪽이 좋아 보인다

  • 라고 하는 미묘한 결론이 되었습니다.

    새로운 커멘드의 주의서로는 거동이 변경될 가능성이라고 하는 방법이므로, 적어도 커맨드가 없어지는 일은 없을 것 같기 때문에, 향후의 git의 릴리스로 git switchgit restore 맞습니다.

    좋은 웹페이지 즐겨찾기