>  기사  >  웹 프론트엔드  >  Git Checkout을 버리세요: 대신 Git 스위치와 Git 복원을 사용하세요

Git Checkout을 버리세요: 대신 Git 스위치와 Git 복원을 사용하세요

Barbara Streisand
Barbara Streisand원래의
2024-10-14 13:28:05798검색

일상 업무에서 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] -- 이었으며 여기서 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에는 해당 옵션이 없습니다.

그래프로 표시:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

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

그래프로 표시:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

위에서 언급한 내용은 기본값이며, 다른 커밋에서 복원하려면 --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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.