지점에서 추적하는 원격을 변경하는 방법은 무엇입니까?


674

central저장소 내 지역의 repo에 새 원격을 생성하므로, 새 서버에 설정하고 그에게 밀어했다.

그러나 지금 내가 할 때, 나는 git pull최신 상태라고 주장합니다. 그것은 잘못입니다 . 새로운 원격 분기가 아닌 오래된 원격 분기 에 대해 말하고 있습니다.

다른 리모컨을 추적하기 위해 로컬 지점을 어떻게 변경합니까?

git config 파일에서 이것을 볼 수 있지만 물건을 엉망으로 만들고 싶지 않습니다.

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

1
제목을 수정했습니다. 실제로 추적중인 리모컨을 변경하려고하지만 여전히 동일한 지점 이름을 추적합니다.
Cascabel


5
이것을 기존 Git 브랜치 트랙을 원격 브랜치로 만드는 방법은 무엇입니까? . 이 질문은 지점이 이미 원격 지점을 추적하고 있음을 지정하지 않습니다. 이거에요

1
설정 파일을 편집 같은 날 것으로 보인다 것은 가장 쉬운 방법입니다 이것에 대해 이동하는 가장 안전한 방법
스티븐 루

답변:


1080

git v1.8.0 이상 사용 :

git branch branch_name --set-upstream-to your_new_remote/branch_name

또는 -u스위치를 사용할 수 있습니다 .

git branch branch_name -u your_new_remote/branch_name

git v1.7.12 또는 이전 버전 사용 :

git branch --set-upstream branch_name your_new_remote/branch_name


2
이것이 내가 찾고있는 것입니다-주어진 지점의 원격 추적 지점을 변경했습니다. 감사!
joachim

7
아, 내 나쁜. 실수로 브랜치 이름을 변경하지는 않지만 모든 것이 좋기 때문에 config를 통해 여전히 수행합니다. +1.
Cascabel

로부터 1.8.0 릴리스 노트 : 자식 지점 --set-상류 원산지 / 마스터 "이 말을 유혹했다" "하지만, 그 망할 놈의 현지 지점 주선 말한다"현재 체크 아웃 지점과 통합 원산지 / 마스터 " 이 옵션은 더 이상 사용되지 않으며 새로운 "--set-upstream-to"(짧고 달콤한 "-u") 옵션을 대신 사용하십시오. "
Jared Beck

너무 깨끗해; _; 내가 만든 작은 혼란을 쉽게 해결할 수 있습니다! 감사합니다 =))
Aditya MP

56
원격 추적 분기가 아직 존재하지 않지만 기존 원격 추적 분기가 현재 추적되어 있으면 기존의 새 원격 추적 분기로 변경할 수 없습니다. 현재 원격 추적 지점을 먼저 설정 해제해야합니다 git branch --unset-upstream.-이 답변에 지정된대로 (또는 다음으로 git push -u / --set-upstream) 작동합니다.
hakre

88

나를 위해 수정은 다음과 같습니다.

git remote set-url origin https://some_url/some_repo

그때:

git push

3
이것이 Github이 말하는 방식입니다. help.github.com/articles/changing-a-remote-s-url
fsharp

18
이것은 실제로 원격 위치를 변경하고 추적하는 원격 기술을 (기술적으로) 변경하지 않습니다. 여전히 "원점"을 추적하고 있으며 원점의 정의 만 업데이트합니다. 일부 유스 케이스의 경우 이것은 나쁜 것일 수 있습니다. jQuery를 포크하고 새 리모트를 작성한다고 가정하십시오. "origin"은 포크이고 "upstream"은 jQuery입니다. 그런 다음 포크 대신 원래 리포지를 일시적으로 추적해야한다고 가정하십시오. 당신이 set-url그것을 설정하고 다시 잊어 버린 경우 , 미래의 git push명령이 실패합니다
stevendesu

42

최신 git (2.5.5) 에서 명령은 다음과 같습니다.

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

현재 로컬 지점의 원격 추적 지점이 업데이트됩니다.


3
때리는 git branch --set-upstream-to=origin/develop오류 : error: the requested upstream branch 'origin/develop' does not exist. 이전에는 원격 지점의 이름을 델리 롭으로 변경했습니다.
belgoros

1
@belgoros git fetch --all어쩌면?
Gabriel Devillers

25

발생하는 상황을 많이 제어 할 수있는 또 다른 옵션은 직접 구성을 편집하는 것입니다.

git config --edit

또는 속기

git config -e

그런 다음 원하는대로 파일을 편집하고 저장하면 수정 사항이 적용됩니다.


1
이것은 나를 위해 날을 구했다. 감사!
Martyn Chamberlin

내 문제는 두 가지 기원이 있다는 것입니다. (원산지 및 원산지-알고). 그러나 현지 주인은 "원산지-알고"를 추적하고있었습니다. 그러나 나는 그것이 "원산지"를 추적하기를 원했다. 내가 바꿀 수있는 유일한 방법은 git config를 편집하는 것입니다.
Aswin Prasad

19

잘 알고 있다면 구성 파일을 편집해도 안전합니다. 좀 더 편집증이되고 싶다면 porcelain 명령을 사용하여 수정할 수 있습니다.

git config branch.master.remote newserver

물론 이전과 이후의 구성을 살펴보면 구성이 정확히하려는 것을 볼 수 있습니다.

그러나 당신의 개인적인 경우에, 내가 할 일은 :

git remote rename origin old-origin
git remote rename new-origin origin

즉, 새 서버가 표준 원격 서버가 될 경우 원래 서버에서 복제 한 것처럼 서버를 오리진이라고 부르지 않겠습니까?


3
git은 영리하고 원격 이름 바꾸기를 구성 파일로 전달했기 때문에 실제로는 구성 파일이 'old-origin'이라고 말했습니다.
joachim

개인적으로, 나는이 방법이 수용된 방법보다 개념적으로 더 의미가 있다고 생각하지만, 그것들은 기능적으로 동등하다고 생각합니까?
Evan Donovan

1
@Jefromi : A remote rename는 설정 [remote]과 설정 모두에서 리모콘의 이름을 변경하기 때문에 요구되는 것을하지 않을 것입니다 [branch]. 따라서이 경우 필요한 것은 구성 파일을 편집하고 [remote]구성 줄 에서 바로 (원격 이름 바꾸기) 말을하는 것 입니다.
Sumeet Pareek

7
git fetch origin
git checkout --track -b local_branch_name origin/branch_name

또는

git fetch
git checkout -b local_branch_name origin/branch_name

내 경우에는 필요했습니다 git fetch. 비트 버킷에 새 브랜치를 만들고 전환하기로했습니다. git은 원격 변경에 대해 알지 못하므로 git fetch이전에해야했습니다 git checkout feature/new-feature-branch. 이것이 다른 누군가를 돕기를 바랍니다.
TelamonAegisthus

6

가장 쉬운 명령입니다.

git push --set-upstream <new-origin> <branch-to-track>

예를 들어, 명령 git remote -v이 다음과 같이 생성 되면 :

origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (fetch)
origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (push)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (fetch)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (push)

대신 팀 추적으로 변경하려면 다음을 수행하십시오.

git push --set-upstream team master

모호한 것이 없으면 추적 할 분기는 선택 사항입니다. Github에서 멀어 질 때 당신의 제안을 사용했습니다.) 감사합니다.
gouessej '

4

현재 지점을 삭제하고 다음을 수행 할 수 있습니다.

git branch --track local_branch remote_branch

또는 구성에서 원격 서버를 현재 서버로 변경하십시오.


: 나를 위해 작동하지 않았다, 단지 작업 명령은 @uma에서 하나 git checkout --track -b local_branch_name origin/branch_name
사드 Benbouzid

2

최신 git documentation 에서 이해 한 내용을 바탕으로 시놉시스는 다음과 같습니다.

git branch -u upstream-branch local-branch
git branch --set-upstream-to=upstream-branch local-branch

이 사용법은 다음과 같이 urschrei의 답변과 약간 다릅니다.

git branch local-branch -u upstream-branch 
git branch local-branch --set-upstream-to=upstream-branch 

그들이 문서를 다시 변경했다고 생각합니까?


1

2.7.4 와 같은 최신 git 버전 에서

git checkout branch_name # 추적 지점을 변경하려는 지점 이름

git branch --set-upstream-to=upstream/tracking_branch_name # 업스트림-원격 이름


1

내가 찾은 @critikaster는 ,의 포스트 도움이 제외 내가 GIT 2.21로이 명령을 수행 할 수 있다고 :

$ git remote set-url origin https://some_url/some_repo
$ git push --set-upstream origin master

0

가장 쉬운 방법은 단순히 새로운 지점으로 푸시하는 것입니다.

자식 푸시 -u 원점 분기 / 이름

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.