원격 브랜치를 추적하기 위해 기존 git 브랜치 가져 오기


81

git로 작업 할 때의 일반적인 워크 플로는 다음과 같습니다.

  1. 로컬 저장소 만들기
  2. 해당 저장소에서 일부 작업을 수행하고 파일을 추가 / 변경합니다.
  3. 저장소의 중앙 원격 위치를 원한다고 결정하고 하나를 만듭니다.
  4. 내 로컬 저장소의 모든 커밋을이 새 원격 저장소로 푸시

그러나 이제는 내가 어디로 밀고 당기고 있는지 지정하지 않고도이 원격 저장소 push와 주고받을 수 있기를 원합니다 pull. 로컬 마스터가 원격 마스터를 추적하기를 원합니다.

이 작업을 수행 하는 적절한 방법은 나에게 명확하지 않으며 실제로 하나 이상의 명령이되어서는 안되지만 설명서에서 확인할 수 없었습니다.

리포지토리 당 한 번만 수행되는 작업이기 때문에 일반적으로 두 가지 간단하지만 엉뚱한 솔루션 중 하나를 사용했습니다.

  1. git clone새 로컬 저장소를 만드는 데 사용 되었으며 이전 저장소를 삭제했습니다. git 복제 후 새 저장소가 원본을 추적하도록 설정됩니다.
  2. 마스터 트랙 원본을 만들기 위해 수동으로 .git / config를 편집했습니다.

명령을 실행할 수 있어야한다고 생각합니다 git remote. 마스터가 원격 마스터를 추적하도록 기존 리포지토리를 설정하는 형식 일 것입니다 . 누구든지 그 명령이 무엇인지 말해 줄 수 있습니까?


실제로 비슷한 질문을하기 전에 물어되었음을 밝혀 : stackoverflow.com/questions/312055/...
SpoonMeiser

git 버전> = 1.7.0.0의 경우 하나의 명령으로 수행 할 수 있습니다 . 여기에 설명되어 있습니다 .
KiRPiCH 2010


답변:


155

설정 업스트림 인수를 사용하십시오.

git branch --set-upstream local-branch-name origin/remote-branch-name

위의 명령을 실행하면 .git / config 파일이 올바르게 업데이트되고 다음 출력으로 확인됩니다.

"원점에서 원격 지점 원격 지점 이름을 추적하도록 설정된 지점 로컬 지점 이름."

편집 :마티는 말했다 : ".에서 버전 힘내 V1.8.0, --set-상류가되지 않습니다를 사용하는 대신-상류에 --set."

git branch --set-upstream-to local-branch-name origin/remote-branch-name

참조 자세한 내용은.


18
버전 Git v1.8.0에서는 --set-upstream더 이상 사용되지 않습니다. --set-upstream-to대신 사용하십시오 .
Martijn

1
git remote show <remote>지역 지점에서 어떤 지점을 추적하는지 확인하는 데 사용
naitsirch

1
이 제안 된 편집 은 승인되어서는 안되며 근본적으로 답변을 변경했으며 새 옵션에 대한 인수가 반전 되었기 때문에 잘못된 상태로 남겨졌습니다. 원래 포스터가 자신의 답변을 업데이트할지 여부를 결정하게하십시오.

1
또한git push -u
mattr-

set upstream실제로 코드를 올리지 않고 매핑을 설정하지 않습니까? push는 코드를 푸시하여 매핑을 생성하도록합니다. 아직 코드가 없지만 매핑을 설정하고 싶습니까?
user20358

19

git help remote당신이 알아야 할 것을 보여줄 것입니다. 나는 당신이 원하는 것은

git remote add [remote-name] [remote-url]

# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]

# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]

.git / config를 수동으로 편집하여 설정할 수도 있습니다.


또 다른 옵션은 중앙 저장소를 만든 다음 작업 디렉토리를 삭제하고 중앙 저장소에서 복제하여 다시 만드는 것입니다. 하지만 .git / config를 편집하면 더 많은 정보를 얻을 수 있습니다.
William Pursell

중앙 저장소를 복제하고 .git / config를 편집하는 것은 내 질문에서 이미 언급 한 두 가지 옵션입니다.
SpoonMeiser

8

원격 분기를 추적하기 위해 새 로컬 분기를 생성하려는 경우에도 사용할 수 있습니다.

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

또는 더 나은 :

git checkout -t origin/branch_name

git checkout --track -b branchname origin branchname fatal : git checkout : 경로 업데이트는 브랜치 전환과 호환되지 않습니다. 커밋으로 확인할 수없는 'origin / branchname'을 체크 아웃하려고 하셨나요?
edebill

6

최신 버전의 git에서는 다음을 사용할 수 있습니다.

git branch --track origin/branch_name

4
이 게시물은 너무 짧거나 코드 만 있기 때문에 자동으로 저품질로 표시됩니다. 문제를 해결하는 방법을 설명하는 텍스트를 추가하여 확장 해 주시겠습니까?
gung-Monica 복원

이것이 가장 정확한 답입니다! 위의 모든 내용이 올바르지 않거나 더 이상 지원되지 않습니다git branch --set-upstream BRANCH fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
GTodorov

3

The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master


1

3 년을 앞당겨 (내가 뭘했는지 확인하세요 :-)) Git Bash를 사용하여 추적되지 않은 브랜치를 가져 오려고했고

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> develop

다음은 내가 필요한 것을 달성했습니다.

$ git branch --set-upstream-to=origin/develop develop Branch 'develop' set up to track remote branch 'develop' from 'origin'.


-1

다음 명령을 사용하십시오.

git clone [<options>] [--] <repo> [<dir>]

안녕하세요, 질문을 다시 읽고 싶을 수도 있습니다. 저장소 복제에 대해 다시 언급하지만 로컬 저장소가 처음 생성되고 처음에 원격을 추적하지 않은시기에 대한 질문입니다.
SpoonMeiser
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.