힘내 원격 '푸시'기본값 변경


228

Git 기본 원격 지점 대상을 변경하고 싶습니다.

git push

대신에:

git push upstream

현재 이것은 원본 원격으로 설정되어 있으며 다른 원격으로 설정하고 싶습니다.

원본 (복제본) 리모컨을 제거하려고했습니다.

git remote rm origin

원래 리모컨을 제거했습니다. 그러나 git push문제 가 해결되지 않습니다 . 나는 여전히 얻는다 :

치명적 : 구성된 푸시 대상이 없습니다.
명령 행 에서 URL을 지정 하거나 다음을 사용하여 원격 저장소를 구성하십시오.

나는 또한 놀려고 노력했다.

git remote set-url --push myfork origin

다른 옵션이지만 작동하지 않는 것 같습니다 (아마도 원점을 너무 빨리 삭제했기 때문일 수 있습니다).

여기에 대한 답변에 따라 변경하려고했습니다.

git config push.default upstream (or matching)

그러나 둘 다 작동하지 않았습니다.

답변:


215

git push -u <remote_name> <local_branch_name>기본 업스트림을 설정하는 데 사용할 수 있습니다 . 자세한 내용은 git push 설명서를 참조하십시오.


1
작동하지 않습니다 : '' '치명적 :'원본 '이 git 저장소 치명적인 것으로 보이지 않습니다. 원격 끝이 예기치 않게 중단되었습니다.' '' 단지 작업 해결책을 발견, 나는 대답에 업데이 트됩니다
alonisser

34
추가 설명으로 구문은이어야합니다 git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>.
마르코 라 제리

33
예 : git push -u origin master:master.
starbeamrainbowlabs

1
기본 원격 설정 후 ... git push현재 로컬 지점의 원격 지점을 강제 로 푸시 할 수 있습니까? 나는 이것이 모든 지점에 대해이 명령을 실행해야한다는 것을 의미합니다. 권리? 전체 리포지토리에 대한 초기 설정 만 할 수 있습니까? @MarcoLazzeri
허니

2
@starbeamrainbowlabs git push -u origin master충분 하지 않습니까? 전체 구문을 설명하고 있습니까?
Josiah Yoder

108

어떤 업스트림 리모트가 브랜치에 "유선"되어 있는지 변경하려면 git branch업스트림 구성 플래그와 함께 명령을 사용하십시오 .

리모트가 먼저 존재하는지 확인하십시오.

git remote -vv

현재 (체크 아웃 된) 브랜치에 대해 선호하는 원격을 설정하십시오.

git branch --set-upstream-to <remote-name>

올바른 업스트림 리모컨으로 분기가 설정되어 있는지 확인하십시오.

git branch -vv


2
그냥 시도 git branch --set-upstream-to myfork하고 오류가있어 : 나는 자식 1.7.9을 실행하는거야 '세트 - 상류에 알 수없는 옵션'> 오류
alonisser

3
구문은 1.8에서 변경되었습니다. stackoverflow.com/questions/520650/…
jtniehof

1
다음 답변을 참조하십시오. stackoverflow.com/a/2432799/1820106 ( git remote set-url origin PATH_TO_REMOTE)
Yinon Ehrlich

10
git branch -u <remotename>/<branch>나를 위해 일했다. 로컬 관심 지점을 체크 아웃 한 상태로 명령이 실행되었습니다. git-scm.com/book/it/v2/Git-Branching-Remote-Branches
norio

2
원격 명령 상세 출력은 실제로 단지 git remote -v또는 git remote --verbose입니다. -vv의 추가 V는 중복입니다.
Artif3x

45

힘내 작업 2.3.2 ...

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

이제 status, pushpull지적하는 myfork원격


기본값을 설정하려는 경우에도 작동 pull합니다.
StingyJack

39

이 명령을 사용하면 한 번에 간단하게 분기의 기본 원격을 쉽게 변경할 수 있습니다

git push -u <remote_name> --all

14
참고로, 이것들은 모두 업스트림 리모컨을 바꾸는 것뿐만 아니라 모두를 밀어 줄 것입니다.
poolie

16

당신이 한 경우 git push origin -u localBranchName:remoteBranchName와 순차적에 git push명령, 당신은 그 기원은, 다음 단계를 수행 존재하지 않는 오류를 얻을 :

  1. git remote -v

내가 상관하지 않는 리모컨이 있는지 확인하십시오. 로 삭제git remote remove 'name'

  1. git config --edit

오래되었거나 존재하지 않는 리모컨의 가능한 징후를 찾으십시오. 찾기 pushdefault:

[remote]
  pushdefault = oldremote

oldremote값을 업데이트 하고 저장하십시오.

git push 지금 작동합니다.


2
감사! 근육 기억으로 인해 다른 리모콘을 -u사용할 때 추가하는 경향이 있습니다 git push. 이렇게하면 지정된 리모컨이 기본으로 설정되어 다시 사용 git config --edit하거나 다시 누르면 새 리모컨을 설정하여 문제가 해결됩니다.
Tim Visée

13

간단히 설명하면 (우분투 12.04에서 git 버전 1.7.9.5 사용) :

힘내 원격을 추가 / 제거합니다. 서버가 연결된 git의 원격 인스턴스입니다.

git remote add myremote git://remoteurl

그런 다음 git 저장소를 다음과 같이 가져올 수 있습니다.

git fetch myremote

이것이 'myremote'라는 브랜치를 생성하는 것처럼 보이지만 브랜치의 원격은 자동으로 설정되지 않습니다. 이렇게하려면 다음을 수행해야합니다.

먼저이 문제가 있는지 확인하십시오. 즉

git config -l | grep myremote

다음과 같이 보일 것입니다 :

remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

이 표시 branch.myremote.remote=.되면 계속 진행해야합니다.

git config branch.myremote.remote myremote
git checkout myremote
git pull

이제 원격 리포지토리를 최신 상태로 유지해야하며 끌어 오기 / 푸시가 해당 원격 장치에 연결되어 있어야합니다. 분기별로 이러한 방식으로 리모컨을 전환 할 수 있습니다 . [참고] [1]

The Official Git Config Documentation 에 따르면 기본 푸시 브랜치를 설정할 수 있지만 (해당 페이지에서 remote.pushdefault를 검색하면됩니다) 이미 존재하는 리포지토리 / 브랜치에는 영향을 미치지 않으므로 작동하지만 작동합니다. 새로운 리포지토리 / 분기 용. 당신은 그것을 기억해야합니다--global사용자 별 저장소 기본값 (~ / .gitconfig)을 설정 .--system (을 / etc / gitconfig) 시스템 전체 저장소 기본값을 설정하며, 더 플래그는 현재 저장소 (./.gitconfig)에 대한 구성 옵션을 설정하지 않습니다.

또한 push.default 구성 옵션은 원격이 아닌 참조 사양 동작 을 구성하기위한 것입니다. 동작이 입니다.

[1] : git branch --set-upstream myotherremote일반적으로 여기서 작동하지만 git git branch --set-upstream myremote은 사용되는 경우 분기를 자체 원격으로 설정하지 않을 것이라고 불평합니다 . 그러나 이것은 잘못된 동작이라고 생각합니다.


대신 git config -l | grep myremote다음을 간단하게 사용할 수 있습니다.git config --get branch.myremote.remote
Murmel

@Murmel 첫째, 이것은 커뮤니티 위키이므로 자유롭게 향상시킬 수 있습니다. 둘째, --get특정 행동을 가정합니다. 업스트림을 설정하는 다른 방법이 있지만 메모를 사용하여 정보를 찾을 수있는 방법을 제공합니다. 옳은. Git은 완벽하지 않으며, 데이터를 이해하는 것이 더 좋으며, 수행하는 작업과 호출이 적절하게 작동하기를 바랍니다.
smaudet

10

살펴 보는 것이 도움이 될 수 있습니다 .git/config리포지토리 내부를 모든 리모컨과 각 지점의 기본 리모컨이 나열됩니다.

예.

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@gitea.xxx.be:fii/web2016.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "bugfix/#8302"]
    remote = origin
    merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
    remote = origin
    merge = "refs/heads/feature/#8331"
[remote "scm"]
    url = https://scm.xxx.be/git/web2016bs.git
    fetch = +refs/heads/*:refs/remotes/scm/*

이 파일을 수동으로 변경하여 원하지 않는 리모컨을 제거하거나 가지고있는 다른 지점에 대한 기본 리모컨을 업데이트 할 수 있습니다

  • 주의하세요! 리모컨을 변경하거나 제거 할 때이 구성 파일에서 리모컨에 대한 모든 참조를 업데이트하십시오

5

방금이 문제를 해결하기 위해 찾은 다른 기술 (원점을 먼저 삭제하더라도 실수로 보이는 것조차도) git config를 직접 조작하는 것입니다.

git config remote.origin.url url-to-my-other-remote

5
이것은 좋은 해결책이 아니며, git 사용자는 여러 저장소에서 풀 / 푸시 할 수 있어야합니다. 원본의 리모컨을 변경할 수는 있지만 원본의 리모컨을 변경해야한다는 의미는 아닙니다. 리모컨 간의 비 호환성입니다. 병합은 여기에서 도움이되지만 새 브랜치에서 리모컨을 설정하는 것이 더 간단하고 더 많은 기록을 유지합니다.
smaudet

올바른 방법은 아닙니다 ... @Jordan의 답변이 더 적절합니다
Raja Anbazhagan

1
또한보십시오 : stackoverflow.com/a/2432799/1820106 ( git remote set-url origin PATH_TO_REMOTE)
Yinon Ehrlich

5

아주 간단하고 여기에 대한 저의 연구와 함께 여기에 큰 의견 몇 가지를 결합했습니다.

먼저 원격 지점에 연결하려는 로컬 지점을 확인하십시오.

git checkout mybranch

다음:

git branch -u origin/mybranch

어디:

git branch -u {remote name}/{branch name}

메시지가 나타납니다.

"Branch mybranch set up to track remote branch mybranch from origin."

3

필자의 경우 다음과 같이 수정했습니다. * run git config --edit * git config 파일에서 :

[branch "master"]
remote = origin # <--- change the default origin here

0

git remote set-url --push origin 언급 한 것처럼 작동하지만 대체 원격 이름 대신 URL을 명시 적으로 제공해야합니다.

git remote set-url --push origin git@github.com:contributor/repo.git

을 수행하여 이것이 작동했는지 확인할 수 있습니다 git remote -v. 예 :

λ ~/go/src/github.com/stretchr/testify/ master git remote -v
fork    git@github.com:contributor/testify.git (fetch)
fork    git@github.com:contributor/testify.git (push)
origin  git@github.com:stretchr/testify (fetch)
origin  git@github.com:contributor/testify.git (push)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.