Git에서 원격 지점을 로컬 지점으로 복사
-
Git에서 원격 지점을 로컬 지점으로 복사하는 최신 및 최상의 방법 -
git switch -c
-
Git에서 원격 지점을 로컬 지점으로 복사하는 이전 방법 -
git checkout
-
git branch
명령의--copy
옵션을 사용하여 원격 분기를 Git의 로컬 분기로 복사 - 힘내 복사와 복제의 차이점
이 튜토리얼은 새로운 git switch -c
명령을 사용하여 원격 분기를 로컬 분기로 복사하는 방법을 보여줍니다. 이를 수행하는 두 가지 이전 방법인 git checkout
원격 분기를 로컬로, 및 -c
플래그가 있는 git 분기에 대해 논의할 것입니다.
우리는 콘텐츠를 로컬 브랜치에 복사할 뿐 원격과 추적 관계를 생성하지 않습니다. 여기서 사용 사례는 백업을 생성하거나 콘텐츠를 탐색하는 것이지만 변경 사항을 원격 브랜치에 병합하고 싶지는 않습니다.
Git에서 원격 지점을 로컬 지점으로 복사하는 최신 및 최상의 방법 - git switch -c
이전에는 git checkout
명령이 여러 목적으로 오버로드되었습니다. 다른 브랜치를 체크인하고 커밋에서 변경 사항을 복원합니다.
이로 인해 개발자들 사이에 많은 혼란이 생겼습니다.
최신 버전의 Git(Git v2.23, 2019년 3분기 이상)에서는 다른 분기에 체크인하기 위한 git switch
라는 새로운 명령을 도입했습니다. --create
옵션을 사용하면 전환하기 전에 존재하지 않는 경우 새 분기를 생성하는 데 사용할 수 있습니다.
이것은 이제 리모트를 로컬 브랜치로 복사하는 가장 권장되는 방법입니다.
몇 개의 분기로 원격 저장소를 설정하고 git branch
명령으로 나열합니다.
git branch -a
원격 저장소에서는 다음과 같이 표시됩니다.
another_branch
라는 브랜치를 로컬 저장소에 복사합니다.
먼저 git fetch
명령을 사용하여 원격 분기를 로컬 저장소로 가져옵니다.
git fetch --all
이것이 원격 브랜치를 가져오는 것을 볼 수 있습니다.
이제 git switch
명령을 사용하여 origin/another_branch
의 복사본을 만듭니다.
몇 가지 옵션을 전달합니다. -c
플래그를 사용하여 새 복사 분기를 만듭니다(미리 존재하지 않음). 또한 복제본이 아닌 분기 복사본만 원하기 때문에 --no-track
옵션을 제공합니다(이 게시물의 뒷부분 참조).
git switch -c <new_branch> <old_branch> --no-track
이 명령은 new_local_copy
라는 이름으로 새 복사본을 만들고 전환(체크)했습니다.
이제 로컬 저장소의 모든 브랜치를 나열하면 복사된 브랜치 new_local_copy
는 복사한 브랜치 another_branch
를 추적하지 않습니다.
git switch remote branch
를 사용하여 로컬 저장소에 복사본을 만드는 것이 가장 좋습니다.
Git에서 원격 지점을 로컬 지점으로 복사하는 이전 방법 - git checkout
git checkout
은 이전 Git 버전에서 많은 작업을 수행하는 명령이었습니다. 그들 중 하나는 다른 지점으로 전환했습니다.
따라서 로컬로의 Git 체크아웃 원격 분기는 로컬 복사본을 만드는 이전 방법이었습니다.
먼저 복사하려는 원격 브랜치를 체크아웃합니다. (브랜치를 먼저 가져와야 합니다.)
git checkout <remote_branch>
다음으로 git branch
명령을 사용하여 이 분기의 새 복사본을 만듭니다. 우리는 두 브랜치 사이에 추적 관계를 만들고 싶지 않기 때문에 --no-track
옵션을 다시 전달합니다.
git branch <new_branc> --no-track
새로 생성된 분기가 이전 원격 분기를 추적하지 않는 것을 아래에서 볼 수 있습니다.
이 오래된 방법과 새로 도입된 git switch
명령 사이에서 git branch
명령은 분기를 복사하는 --copy
옵션을 배웠습니다. 이제 이 방법을 사용하여 원격을 새 로컬 분기에 복사하는 방법을 살펴보겠습니다.
git branch
명령의 --copy
옵션을 사용하여 원격 분기를 Git의 로컬 분기로 복사
2단계 절차입니다.
먼저 git checkout
명령으로 원격 브랜치를 체크아웃합니다. --no-track
옵션에 유의하십시오.
git checkout <old_branch> --no-track
다음으로 git branch
명령에 -c
플래그(--copy
용)를 전달하여 새 분기에 복사합니다.
git branch -c <old_branch> <new_branch>
다시 말하지만 새 복사본이 이전 분기를 추적하지 않는다는 것을 아래에서 볼 수 있습니다.
힘내 복사와 복제의 차이점
Git copy
는 Git 복제
와 다릅니다. 몇 가지 미묘한 차이가 있습니다.
-
분기를 복사하면 새 분기가 이전 분기를 추적하지 않습니다. 이는 둘 사이에 연결이 없음을 의미합니다. 새 분기는 이전 분기의 내용을 복사했을 뿐입니다.
그러나
clone
은 이전 분기를 추적합니다. 즉, 명시적 인수를 전달하지 않고도 기본 형식으로 이러한 명령을 푸시, 풀, 병합, 리베이스 및 사용할 수 있습니다. 추적 관계는 분기 이름을 자동으로 채웁니다. -
Git에서는 효율성을 위해 복제가 최적화되어 있습니다. 따라서 복제할 때 새 분기는 이전 분기의 reflog, 구성 및 후크를 가져오지 않습니다.
copy
는 이러한 모든 항목도 복사합니다. 예를 들어reflog
의 도움으로 손실된 커밋을 복구하려고 할 때와 같은 경우에 중요합니다. -
Git
copy
작업에는 몇 가지 일반적인 사용 사례가 있습니다. 가장 일반적으로 원격 브랜치의 백업을 생성합니다. 또 다른 사용 사례는 개발자가 자신의 변경 사항을 기본 코드 베이스로 푸시할 의도 없이 흥미로운 원격 기능 분기를 다운로드하고 탐색하려는 경우입니다.