어떤 브랜치와 병합하고 싶은지 말하지 않고 당겨달라고 부탁했습니다


125

TL; DR : 뽑을 수없는 "추적 된"지점이 있습니다.

그래서 여기 "버킷 -4"가 있습니다 :

$ git branch -v
  bucket-1       410f7b5 * gh-53 * gh-48 * "Share App"
  bucket-2       7ed70a2 * upgrade to SOLR 3.3.0
  bucket-3       400ffe4 * emergency fix prod issue
* bucket-4       64c2414 Merge branch 'bucket-3' into bucket-4
  master         8dc4854 [ahead 1] * gh-73

리모컨에서 변경 사항을 가져오고 싶습니다.

$ git pull

You asked me to pull without telling me which branch you
want to merge with, and 'branch.bucket-4.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "bucket-4"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

흠, 나는 이미 "버킷 -4"를 추적 지점으로 추가했다고 생각했다. 보자 :

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:abcd/main.git
  Push  URL: git@github.com:abcd/main.git
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    bucket-3
    master
  Remote branches:
    bucket-1       tracked
    bucket-2       tracked
    bucket-3       tracked
    bucket-4       tracked
    master         tracked
  Local branches configured for 'git pull':
    bucket-1       merges with remote bucket-1
    bucket-2       merges with remote bucket-2
    bucket-3       merges with remote bucket-3
    master         merges with remote master
  Local refs configured for 'git push':
    bucket-1       pushes to bucket-1       (up to date)
    bucket-2       pushes to bucket-2       (up to date)
    bucket-3       pushes to bucket-3       (up to date)
    bucket-4       pushes to bucket-4       (local out of date)
    master         pushes to master         (fast-forwardable)

실제로 bucket-4는 "추적 됨"으로 표시되어 있지만 어떻게 든 푸시로 구성되었지만 풀은 아닙니다.

.git/config파일을 살펴보면 대부분의 분기에 대해 "원격"및 "병합"항목이 있지만 bucket-4에는 없습니다. 이것이 없으면 어떻게 "추적"된 것으로 간주됩니까?

[remote "origin"]
    url = git@github.com:abcd/main.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "rel-2011-07-07"]
    remote = origin
    merge = refs/heads/rel-2011-07-07
[branch "bucket-1"]
    remote = origin
    merge = refs/heads/bucket-1
[branch "bucket-2"]
    remote = origin
    merge = refs/heads/bucket-2
[branch]
    autosetupmerge = true
[branch "bucket-3"]
    remote = origin
    merge = refs/heads/bucket-3

여기서 가능한 해결책은 remote/merge구성 파일에 bucket-4에 대한 항목 을 추가하는 것 입니다. 그러나 이것이 없으면 어떻게 "추적"된 것으로 간주됩니까? bucket-4는 로컬로 생성 된 다음이 리포지토리에서 서버로 푸시되었으므로 어떻게 든이 지점에 대한 추적을 올바르게 설정하지 않았다고 생각합니다.

향후 모든 로컬 브랜치가 리모컨을 올바르게 추적하기 위해 추가 할 수있는 구성이 있습니까?


2
이 질문은 올바른 방향으로 나를 가리 켰습니다. 내가 뽑으려고했던 지점에 대한 .git / config 파일에 항목을 추가해야했는데 제대로 작동했습니다.
Mr. Bungle

나도 그래, 그렇게하는 방법은 아래의 Mark Longair와 같이 git branch --set-upstream bucket-4 origin / bucket-4
Jonathon Horsman

답변:


191

그것은 말한다 bucket-4 pushes to bucket-4기본 분기가 원격에 일치하는 이름을 가진 하나에 밀어 것입니다 누른다면해서. ( 로컬 브랜치가 원격 추적 브랜치를 추적하고 원격 추적 브랜치는 원격 저장소에서 다른 이름을 가진 브랜치에 해당 하더라도 여전히 기본값 입니다.)

당신 사이의 연결을 설정하는 가장 간단한 방법 bucket-4bucket-4인은 origin당신이 밀어 다음 번에, 당신이 있는지 확인하는 것입니다 :

git push -u origin bucket-4

또는 다음을 수행 할 수 있습니다.

git branch --set-upstream-to origin/bucket-4

몇 가지 질문에 직접 대답하려면 :

이것이 없으면 어떻게 "추적"된 것으로 간주됩니까?

이 경우에는 그렇지 않습니다 -git config가 branch.bucket-4.merge없거나 원격 구성에 원격 추적 분기를 추적하지 않습니다 branch.bucket-4.remote. 의 출력은 git remote show origin기본적으로 분기가 푸시되는 위치를 보여줍니다.

향후 모든 로컬 브랜치가 리모컨을 올바르게 추적하기 위해 추가 할 수있는 구성이 있습니까?

나는 그렇게 생각하지 않습니다. bucket-4로컬로 만들었을 때 원격 추적 브랜치는 존재하지 않았으므로 해당 지점에서 설정할 수 없으므로 기본적으로 매우 혼란 스러울 수 있습니다. 해당 지점 -u의 첫 번째 git push지점을 업스트림 저장소 에 추가해야 합니다.

도움이 되길 바랍니다.


7
git branch --set-upstream풀을하기 전에 나를 위해 완벽하게 일했습니다
ohaal

git branch --set-upstream bucket-4 origin / bucket-4는 나를 위해 일했다 :-)
Aliza December

밀고 싶지 않다면? 나는이 같은 문제가 있지만이 문제가 발생하는 저장소에서 푸시하고 싶지 않습니다. 방금 원격 원점을 전환했으며 더 이상 추적되지 않는 지점에 대한 최신 HEAD를 끌어 내고 싶습니다 (원격 원점을 전환하기 전에 추적되었지만). 결국 문제가있는 클론을 삭제하고 새로운 원점에서 다시 복제했습니다.
geoidesic

1
실제로 시도 git --set-upstream <branch> origin/<branch>할 때 플래그가 더 이상 사용되지 않아 오류가 발생합니다. 사용 git branch --track origin/<branch>하거나 --set-upstream-to두 번째 답변이 제안한대로 권장합니다. 나는 대답을 업데이트 할 수 있다고 생각한다. @MarkLongair?
AymDev

제안에 감사드립니다, @AymDev-나는 그 변화를 만들었습니다.
Mark Longair

6

git branch --set-upstream <branch> origin/<branch> 적어도 1.8.2.3 (내 버전)부터는 더 이상 사용되지 않습니다.

git branch --set-upstream-to=origin/<branch> <branch>대신 사용하십시오 .


2
이것이 Mark의 답변 에 대한 의견이 되었습니까 ? 또한 실제로 Git 버전 1.8.0 에서는 더 이상 사용되지 않습니다 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.