일상 업무에서 Git을 사용한다면 git checkout은 일반적인 명령입니다. 브랜치를 전환할 때 자주 사용하는데, 설명서를 보면 "브랜치 전환 또는 작업 트리 파일 복원"이라는 문구를 볼 수 있습니다. 하지만 UNIX는 한 가지 일을 잘 수행해야 합니다. 이는 혼란스럽기 때문에 Git 2.23에서는 이를 대체할 수 있는 명령 쌍을 가져왔습니다.
작동 방식을 소개하기 전에 관련 Git 개념을 간략하게 이해해야 합니다.
워킹카피(워킹트리파일) : 하드디스크에 나타나는 저장소에 있는 파일을 말합니다.
인덱스(스테이징 영역 또는 캐시): git이 추가되었거나 git commit을 실행하면 커밋될 내용을 나타냅니다.
HEAD: 브랜치를 체크아웃해야 할 때 "현재" 또는 "활성" 브랜치를 나타냅니다(브랜치를 작업 복사본에 있는 것과 일치시키려는 시도 참조). 한 번에 확인해보세요.
git checkout은 브랜치를 체크아웃하거나 새 브랜치를 생성하여 체크아웃할 수 있습니다.
# Switched to branch 'test' $ git checkout test # Switched to a new branch 'test' $ git checkout -b test # Switch back to the previous branch $ git checkout - # Switched to a commit $ git checkout master~1
git 스위치는 브랜치 관련 작업을 인계받는 데 사용되므로 다음과 같은 작업도 수행할 수 있습니다.
# Switched to branch 'test' $ git switch test # Switched to a new branch 'test' $ git switch -c test # Switch back to the previous branch $ git switch - # Switched to a commit $ git switch -d master~1
그리고 처음에 말했듯이 git checkout은 작업 트리 파일도 복원할 수 있습니다. 기능의 이 부분은 git 복원에 의해 인계됩니다.
과거에는 git checkout --main.c를 사용하여 인덱스에서 작업 트리 파일을 복원할 수 있었으며 구문은 git checkout [treeish] --
# Restoring the working tree from the index $ git checkout -- ./main.c # Restoring index content from HEAD $ git reset -- ./main.c # Restoring the working tree and index from HEAD $ git checkout HEAD -- ./main.c
HEAD에서 인덱스 콘텐츠를 복원할 때는 git Reset만 사용할 수 있으며 git checkout에는 해당 옵션이 없습니다.
그래프로 표시:
git Restore를 사용하면 복원할 파일과 복원할 위치를 더 쉽게 결정할 수 있습니다. 다음 옵션은 복원 위치를 지정합니다.
-W --worktree -S --staged
기본적으로 -W 및 --worktree는 옵션이 지정되지 않은 것처럼(예: git Restore -- ./main.c ) 인덱스에서 작업 트리를 복원합니다. -S 및 --staged는 HEAD에서 인덱스 내용을 복원합니다. 둘 다 전달하면 HEAD에서 인덱스와 작업 트리가 복원됩니다.
예:
# Restoring the working tree from the index $ git restore -- ./main.c # Equivalent to $ git restore --worktree -- ./main.c # Restoring index content from HEAD $ git restore --staged -- ./main.c # Restoring the working tree and index from HEAD $ git restore --staged --worktree ./main.c
그래프로 표시:
위에서 언급한 내용은 기본값이며, 다른 커밋에서 복원하려면 --source 옵션을 사용할 수 있습니다. 예:
# Restore `./main.c` in the working tree with the last commit $ git restore -s HEAD^ -- ./main.c # Equivalent to $ git restore --source=HEAD^ -- ./main.c
또 다른 유용한 git 복원 사례는 잘못 처리된 파일을 복원하는 것입니다. 예:
# Incorrectly deleted files $ rm -f ./main.c # Quickly restore main.c from index $ git restore ./main.c
일괄 복구의 경우:
# Restore all C source files to match the version in the index $ git restore '*.c' # Restore all files in the current directory $ git restore . # Restore all working tree files with top pathspec magic $ git restore :/
git checkout의 기능은 명확하게 구분됩니다. git 스위치는 분기를 전환하는 데 사용되고 git 복원은 작업 트리 파일을 복원하는 데 사용됩니다. 이는 UNIX 철학에 따라 보다 명확한 의미를 제공합니다.
두 명령 모두 2019년에 제안되었으며 현재는 실험적입니다. 변경 사항이 있을 수 있지만 일반적으로 그다지 많지 않으므로 지금 사용하면 이해하기 쉽고 혼란스럽지 않습니다.
이 내용이 도움이 되었다면 제 뉴스레터를 구독 웹 개발에 대한 더 유용한 기사와 도구를 받아보세요. 읽어주셔서 감사합니다!
위 내용은 Git Checkout을 버리세요: 대신 Git 스위치와 Git 복원을 사용하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!