Git에서 원격 지점을 로컬 지점으로 복사

Ankit Raj Goyal 2024년2월15일
  1. Git에서 원격 지점을 로컬 지점으로 복사하는 최신 및 최상의 방법 - git switch -c
  2. Git에서 원격 지점을 로컬 지점으로 복사하는 이전 방법 - git checkout
  3. git branch 명령의 --copy 옵션을 사용하여 원격 분기를 Git의 로컬 분기로 복사
  4. 힘내 복사와 복제의 차이점
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

Repo Multiple Branches 설정

원격 저장소에서는 다음과 같이 표시됩니다.

리모트에 복사할 분기

another_branch라는 브랜치를 로컬 저장소에 복사합니다.

먼저 git fetch 명령을 사용하여 원격 분기를 로컬 저장소로 가져옵니다.

git fetch --all

이것이 원격 브랜치를 가져오는 것을 볼 수 있습니다.

원격 브랜치 가져오기

이제 git switch 명령을 사용하여 origin/another_branch의 복사본을 만듭니다.

몇 가지 옵션을 전달합니다. -c 플래그를 사용하여 새 복사 분기를 만듭니다(미리 존재하지 않음). 또한 복제본이 아닌 분기 복사본만 원하기 때문에 --no-track 옵션을 제공합니다(이 게시물의 뒷부분 참조).

git switch -c <new_branch> <old_branch> --no-track

Git Switch 새 로컬 복사

이 명령은 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

Checkout으로 Git 복사

새로 생성된 분기가 이전 원격 분기를 추적하지 않는 것을 아래에서 볼 수 있습니다.

체크아웃 비추적 관계 복사

이 오래된 방법과 새로 도입된 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>

Branch 명령으로 Git 복사

다시 말하지만 새 복사본이 이전 분기를 추적하지 않는다는 것을 아래에서 볼 수 있습니다.

추적 관계 없는 분기가 있는 Git 복사

힘내 복사와 복제의 차이점

Git copy는 Git 복제와 다릅니다. 몇 가지 미묘한 차이가 있습니다.

  1. 분기를 복사하면 새 분기가 이전 분기를 추적하지 않습니다. 이는 둘 사이에 연결이 없음을 의미합니다. 새 분기는 이전 분기의 내용을 복사했을 뿐입니다.

    그러나 clone은 이전 분기를 추적합니다. 즉, 명시적 인수를 전달하지 않고도 기본 형식으로 이러한 명령을 푸시, 풀, 병합, 리베이스 및 사용할 수 있습니다. 추적 관계는 분기 이름을 자동으로 채웁니다.

  2. Git에서는 효율성을 위해 복제가 최적화되어 있습니다. 따라서 복제할 때 새 분기는 이전 분기의 reflog, 구성 및 후크를 가져오지 않습니다.

    copy는 이러한 모든 항목도 복사합니다. 예를 들어 reflog의 도움으로 손실된 커밋을 복구하려고 할 때와 같은 경우에 중요합니다.

  3. Git copy 작업에는 몇 가지 일반적인 사용 사례가 있습니다. 가장 일반적으로 원격 브랜치의 백업을 생성합니다. 또 다른 사용 사례는 개발자가 자신의 변경 사항을 기본 코드 베이스로 푸시할 의도 없이 흥미로운 원격 기능 분기를 다운로드하고 탐색하려는 경우입니다.