참조 이름이없는 git pull -u는 원점이 아닌 다른 리모트에서만 작동합니다. 밀고 싶을 때 간단히 할 수 있습니다 $

새 분기 ( git checkout -b $BRANCH)를 체크 아웃 할 때 종종 동일한 분기 이름을 사용하여 특정 리모컨으로 푸시하려고합니다. 하나는 “원산지”라는 이름과 다른 하나는 “광산”이라는 두 개의 리모컨이 있습니다. 그런 새로운 지점을“광산”으로 밀고 싶을 때 간단히 할 수 있습니다

$ git push -u mine

이렇게하면 지점 refs/heads/$BRANCH이 원격 “광산”으로 밀고 추적이 시작됩니다.

그러나 “원산지”리모컨에는 동일한 기능이 작동하지 않습니다.

$ git push -u origin
fatal: The current branch $BRANCH has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin $BRANCH

( git push -u origin $BRANCH출력에서 알 수 있듯이을 사용하면 물론 잘 작동하지만 잘못 입력 할 수 있으므로 분기 이름을 반복하지는 않습니다.)

한 리모콘이 다른 리모콘과 다르게 취급되는 이유는 무엇입니까?

구성 파일의 관련 스 니펫 :

[remote "origin"]
    url = ssh://git@server:/path/to/public/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull-requests/*/from:refs/remotes/origin/pr/*
[remote "mine"]
    url = ssh://git@server:/path/to/my/repo.git
    fetch = +refs/heads/*:refs/remotes/mine/*
    fetch = +refs/pull-requests/*/from:refs/remotes/mine/pr/*

보시다시피, 이러한 구성은 동일하게 보이지만 (돌연변이) 다른 동작을 생성합니다. “origin”이라는 이름이 어떤 식 으로든 특별합니까? 아니면 다른 구성을 살펴 봐야합니까?

git 버전 2.7.0을 사용하고 있습니다.



답변

추적 분기에는 원격 및 원격 분기가 연결되어 있습니다. .git / config ( branch.*.remotebranch.*.merge) 에서 분기를 확인하십시오 . 지점의 경우 리모컨은 “광산”입니다.

한 번 봐 가지고 push.default에서 git-config(1)– 기본 동작은 ( simple) 원격 지사 및 지점의 원격 두 가지의 이름이 같은 경우에만 현재 분기를 밀어하는 것입니다.


답변