힘내 : 분기에 대해 기본 구성된 원격은 무엇입니까?


192

원격 베어 저장소가 hub있습니다. 저는 master지점 에서만 일합니다 . 아래이 오류 메시지의 마지막 문장은 궁금합니다. "현재 분기에 대해 구성된 기본 원격"이 무엇인지 어떻게 알 수 있습니까? 어떻게 설정합니까?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

답변:


230

원격 지점 추적

git-branch의 track 옵션을 사용하여 밀고 당기기위한 기본 원격 저장소를 지정할 수 있습니다. 일반적으로 로컬 마스터 브랜치를 만들 때 --track 옵션을 지정 하여이 작업을 수행하지만 이미 존재하므로 다음과 같이 구성을 수동으로 업데이트합니다.

당신의 편집 .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

이제 간단하게 git push 및 git pull을 수행 할 수 있습니다.

[ 출처 ]


OP가 설정 한 경우에도 설정되지 git pull hub master않습니까?
Ryan Bigg

@Ryan Bigg : 자동적이지 않거나 항상 설정을 망칠 것입니다.
찌를

36
이런 이유로 git 명령이 존재할 때 왜 설정 파일을 편집합니까?
urschrei

43
git branch --set-upstream local_branch remote / remote_branch (또는 아래에 설명 된대로 밀 때)
urschrei

25
@ scragz : 안돼! 명령 접근 방식은 .gitconfig가 의미있는 상태로 유지되도록합니다.
smci

260

보다 간단하게 수행 .gitconfig하여 의미있는 상태를 유지할 수 있습니다 .

Git 버전 v1.8.0 이상 사용

git push -u hub master 밀 때 또는
git branch -u hub/master

또는

(이것은을 위해 원격 설정됩니다 현재 체크 아웃 된 지점hub/master)
git branch --set-upstream-to hub/master

또는

(이것은라는 지점의 원격 설정됩니다 branch_name에를 hub/master)
git branch branch_name --set-upstream-to hub/master

v1.7.x이전 또는 이전을 사용중인 경우

당신은 사용해야합니다 --set-upstream:
git branch --set-upstream master hub/master


3
궁금한 분은 : 두 번째 명령을 기존 지점에 사용할 수 있습니다
Eric Hu

1
@ eric-hu 내 답변에 자세히 설명되어 있습니다 : stackoverflow.com/questions/4878249/…
urschrei

1
set-upstream[-to]명령은 현재 구성된 원격을 변경합니다 . 원래 포스터는 기본 구성된 원격 에 대해 물었습니다 . 확실히 그것은 같은 개념이 아닌가?
Steve Pitchers

1
각 분기에는 현재 구성된 원격이 있으며 해당 원격의 어느 분기가 로컬 분기에 해당하는지 지정합니다. 기본 원격 구성은 분기 밀거나 명시 적으로 하나를 지정하지 않은 경우 당기면 결정합니다. 이 답변은 현재 답변 만 설정합니다 . 수락 된 답변 (수동으로 편집)을 사용하면 기본 답변을 설정할 수도 있습니다 . 누구나 수동으로 편집하지 않아도되는 명령을 알고 있습니까?
Steve Pitchers

1
--set-upstream-to.git/config@scragz가 그의 답변 에서 제안한 것과 똑같이 변경했습니다 .
strah

26

완벽을 기하기 위해 : 앞의 답변은 업스트림 브랜치를 설정하는 방법을 알려주지 만이를 확인하는 방법은 없습니다.

이를 수행하는 몇 가지 방법이 있습니다.

git branch -vv모든 지점에 대한 정보를 보여줍니다. (대부분의 터미널에서 파란색으로 포맷 됨)

cat .git/config 이것도 보여줍니다.

참고로 :


-1

예를 들어 마스터와 같이 브랜치에 대한 효과적인 푸시 원격을 얻는 명령은 다음과 같습니다.

git config branch.master.pushRemote || git config remote.pushDefault || 자식 설정 branch.master.remote

"man git config"출력의 이유는 다음과 같습니다.

branch.name.remote [...]는 git fetch 및 git push에게 원격에서 가져 오거나 푸시 할 [...] [push]에 대해 remote.pushDefault (모든 분기의 경우) [및] 로 대체 할 수있는 원격을 알려줍니다 . 현재 분기 [..]가 branch.name.pushRemote [...] 로 대체되었습니다 .

어떤 이유로 "man git push"는 branch.name.remote에 대해서만 알려줍니다. (세 가지 중 가장 낮은 우선 순위 임에도 불구하고) + 설정되지 않은 경우 기본값을 원점으로 푸시합니다. 저장소를 복제 할 때 branch.name.remote가 origin으로 설정되어 있지만이 설정을 제거하면 git push는 실패합니다.


이 질문은 이미 더 유용한 답변으로 답변되었습니다.
Austin Schäfer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.