문제

원격 지점을 추적하는 새 지점을 만드는 방법을 알고 있지만 기존 지점을 원격 지점으로 추적하려면 어떻게 해야 합니까?

그냥 편집할 수 있다는 걸 알아요 .git/config 파일이지만 더 쉬운 방법이 있어야 할 것 같습니다.

도움이 되었습니까?

해결책

지점이 주어졌습니다 foo 그리고 리모컨 upstream:

GIT 1.8.0 기준 :

git branch -u upstream/foo

또는 지역 지점 인 경우 foo 현재 지점이 아닙니다.

git branch -u upstream/foo foo

또는 더 긴 명령을 입력하려면 위의 두 가지와 동일합니다.

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

GIT 1.7.0 기준 :

git branch --set-upstream foo upstream/foo

메모:

  • 위의 모든 명령은 로컬 브랜치를 유발합니다 foo 원격 브랜치를 추적합니다 foo 리모컨에서 upstream.
  • 기존 (1.7.x) 구문은 새로운 (1.8+) 구문에 찬성하여 더 이상 사용되지 않습니다. 새로운 구문은보다 직관적이고 기억하기 쉽습니다.
  • 업스트림을 정의하면 새로 만들어지지 않은 리모컨으로 실패합니다. 이 경우 실행됩니다 git fetch upstream 미리.

또한보십시오: 왜 항상`-set-upstream`을해야합니까?

다른 팁

다음을 수행 할 수 있습니다 (마스터에서 체크 아웃하고 원격 지점 마스터로 밀고 싶다고 가정) :

이미 없으면 '원격'을 설정하십시오.

git remote add origin ssh://...

이제 마스터를 추적 할 수 있도록 구성하십시오.

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

푸시 :

git push origin master

나는 이것을 -u 옵션에서 옵션

$ git push -u origin branch-name

동등한 긴 옵션은입니다 --set-upstream.

그만큼 git-branch 명령도 이해합니다 --set-upstream, 그러나 그 사용은 혼란 스러울 수 있습니다. 버전 1.8.0 인터페이스를 수정합니다.

git branch --set-upstream 비교적 먼 미래에 감가 상각되며 제거 될 수 있습니다. git branch [-u|--set-upstream-to] 더 넓은 논쟁으로 소개되었습니다.

말을 유혹하고 있었다 git branch --set-upstream origin/master, 그러나 그것은 Git에게 현재 확인 된 지점과 통합하기 위해 로컬 브랜치 "Origin/Master"를 준비하도록 지시합니다. 이는 사용자의 의미가 거의 없습니다. 옵션은 더 이상 사용되지 않습니다. 새로운 것을 사용하십시오 --set-upstream-to (짧고 달콤합니다 -u) 옵션 대신.

현지인이 있다고 가정 해 봅시다 foo 분기와 상류와 같은 이름으로 지점을 취급하기를 원합니다. 이런 일이 일어나십시오

$ git branch foo
$ git branch --set-upstream-to=origin/foo

아니면 그냥

$ git branch --set-upstream-to=origin/foo foo

당신은 찾을 수 있습니다 git_remote_branch 도구 유용한 도구. 원격 브랜치를 작성, 게시, 삭제, 추적 및 바꾸기위한 간단한 명령을 제공합니다. 좋은 기능 중 하나는 물어볼 수 있다는 것입니다 grb GIT 명령을 실행하는 명령을 설명합니다.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

실제로 인정 된 답변은 작업에 대해 :

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

나는 git 1.5.x 일찍 당신이 현지 지점을 만들 수 있다고 믿습니다. $BRANCH 원격 브랜치를 추적하십시오 origin/$BRANCH, 이와 같이.

을 고려하면 $BRANCH 그리고 origin/$BRANCH 존재하며 현재 체크 아웃하지 않았습니다 $BRANCH (있는 경우 스위치), 수행 :

git branch -f --track $BRANCH origin/$BRANCH

이것은 재현합니다 $BRANCH 추적 지점으로. 그만큼 -f 창조물을 강요하지만 $BRANCH 이미 기존. --track 일반적인 기본값이 제자리에있는 경우 선택 사항입니다 (즉, git-config 매개 변수 branch.autosetupmerge 사실이다).

if origin/$BRANCH 아직 존재하지 않으므로 로컬을 밀어서 만들 수 있습니다. $BRANCH 다음과 같은 원격 저장소로

git push origin $BRANCH

이어서 이전 명령이 이어지어 로컬 브랜치를 추적 지점으로 홍보합니다.

1- 다음을 사용하여 로컬 메타데이터를 업데이트합니다. git fetch --all

enter image description here

2- 다음을 사용하여 원격 및 로컬 지점을 표시합니다. 자식 브랜치 -a, 다음 스크린샷을 참조하세요.

enter image description here

3- 원격과 연결하려는 대상 지점으로 전환하십시오.사용하여

자식 체크아웃 지점 이름

예 :

enter image description here

4- 다음을 사용하여 로컬 지점을 원격 지점에 연결합니다.

git Branch --set-upstream-to nameOfRemoteBranch

참고: nameOfRemoteBranch :2단계 " git Branch -r "의 출력에서 ​​복사합니다.

사용 예:

enter image description here

실행하십시오 :

git config push.default tracking

문제를 해결할 수 있습니다

편집 .git/config 아마도 가장 쉽고 빠른 방법 일 것입니다. 그것이 원격 브랜치를 처리하기위한 GIT 명령이 어쨌든 수행하는 일입니다.

손으로 파일을 뭉치지 않으려면 (그리고 그렇게하기가 어렵지는 않다면) 언제든지 사용할 수 있습니다. git config 그렇게하려면 ... 그러나 다시, 그것은 단지 편집 할 것입니다. .git/config 어쨌든 파일.

물론 사용할 때 원격 브랜치를 자동으로 추적하는 방법이 있습니다. git checkout (전달함으로써 --track 예를 들어 플래그)이지만 이러한 명령은 새로운 기존의 지점이 아닙니다.

아주 짧게

git branch --set-upstream yourLocalBranchName origin/develop

이것은 당신을 만들 것입니다 yourLocalBranchName 호출 된 원격 브랜치를 추적합니다 develop.

1.6.x의 경우,이를 사용하여 수행 할 수 있습니다 git_remote_branch 도구:

grb track foo upstream

그것은 git가 만들어 질 것입니다 fooupstream/foo.

다음 명령을 사용합니다 (귀하의 로컬 브랜치 이름이 "Branch-Name-local"이고 원격 브랜치 이름이 "Branch-Name-Remote"라고 가정합니다.

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

로컬 및 원격 지점이 모두 동일한 이름을 갖는 경우 다음을 수행합니다.

$ git branch --set-upstream-to=origin/branch-name branch-name

여기, 사용 github 그리고 git version 2.1.4, 그냥 해:

$ git clone git@github.com:user/repo.git

그리고 리모컨은 로컬로 연결되어 있지 않더라도 itelsef에 의해옵니다.

$ git remote show origin

* remote origin
  Fetch URL: git@github.com:user/repo.git
  Push  URL: git@github.com:user/repo.git
  HEAD branch: master
  Remote branches:
    develop tracked         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    master  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

그러나 물론 여전히 현지 지점은 없습니다.

$ git branch
* master                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

보다? 이제 Develp 만 확인하면 자동으로 Magic을 수행합니다.

$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

너무 쉽게!


요약. 이 두 가지 명령을 실행합니다.

$ git clone git@github.com:user/repo.git
$ git checkout develop

'-트랙'옵션을 사용하십시오

  • git pull :

    git checkout --track <remote-branch-name>

  • 또는:

    git fetch && git checkout <branch-name>

새 지점을 만들려면 다음 명령을 사용할 수 있습니다.

 git checkout --track -b example origin/example 
이미 생성 된 분기가 리모컨 사이의 링크를 생성하려면 해당 지점에서 아래 명령을 사용합니다.

 git branch -u origin/remote-branch-name

이것은이 질문에 대한 직접적인 답이 아니지만 업스트림 브랜치를 구성하려고 할 때 나와 같은 문제를 겪을 수있는 사람을 위해 여기에 메모를 남기고 싶었습니다.

조심하십시오 push.default.

오래된 git 버전의 경우 기본값이있었습니다 어울리는, 예를 들어 다음과 같은 경우 매우 바람직하지 않은 행동을 유발합니다.

로컬 브랜치 "마스터"원산지/마스터로 추적

원격 브랜치 "업스트림"상류/마스터로 추적

"상류"지점에있을 때 "git push"를 시도한 경우 푸시 .default 매칭 Git은 자동으로 현지 지점 "마스터"를 "업스트림/마스터"로 병합하여 많은 혼란을 일으 킵니다.

이것은 더 세대한 행동을 제공합니다.

git config -global push.default 상류

다소 관련된 방식으로 기존 추적 브랜치를 기존 브랜치에 추가하려고했지만 해당 원격 추적 브랜치를 추가하고 싶었던 시스템의 원격 저장소에 액세스 할 수 없었습니다 (이 사본을 자주 내보내기 때문에 리모컨을 통해 해당 리모컨으로 푸시 할 수있는 다른 시스템으로 리베로하십시오). 나는 아직 가져 오지 않은 로컬에 원격 브랜치를 추가 할 수있는 방법이 없다는 것을 알았습니다. the requested upstream branch 'origin/remotebranchname' does not exist).

결국 나는 새 헤드 파일을 추가하여 이전에 알려지지 않은 새로운 원격 브랜치 (페치없이)를 추가했습니다. .git/refs/remotes/origin/remotebranchname 그런 다음 Ref를 복사합니다 (시선은 가장 빠르고 절름발이가되었습니다.

일단 완료되면 사용할 수있었습니다 git branch --set-upstream-to=origin/remotebranchname

또는 간단히 :

이미 있지 않은 경우 지점으로 전환하십시오.

[za]$ git checkout branch_name

운영

[za]$ git branch --set-upstream origin branch_name
Branch origin set up to track local branch brnach_name by rebasing.

그리고 당신은 다음을 준비했습니다 :

 [za]$ git push origin branch_name

Alawys는 구성 파일을보고 실행하여 무엇을 추적하는지 확인할 수 있습니다.

 [za]$ git config -e

이것을 아는 것도 좋습니다. 어떤 지점이 추적되고 어떤 지점이 아닌지를 보여줍니다. :

  [za]$ git remote show origin 

나처럼 원격 브랜치 이름으로 로컬 브랜치 이름을 동기화하려는 사람이라면 다음은 편리한 명령입니다.

git branch -u origin/$(git rev-parse --abbrev-ref HEAD)

이것도 효과가있을 것입니다

git branch --set-upstream-to=/< remote>/< branch> < localbranch>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top