힘내 : 원격 지점을 로컬로 병합


203

를 통해 모든 원격 지점을 가져 왔습니다 git fetch --all. git branch -aremotes / origin / branchname으로 병합하려는 지점을 볼 수 있습니다 . 문제는 접근 할 수 없습니다. 병합하거나 결제 할 수 없습니까?

답변:


319

원격 추적 분기 ~ (와 함께 나열 됨 git branch -r)를 원격 이름으로 참조 할 수 있습니다 .

원격 브랜치를 가져와야합니다.

git fetch origin aRemoteBranch

로컬 지점에서 해당 원격 지점 중 하나를 병합하려는 경우 :

git checkout master
git merge origin/aRemoteBranch

참고 1 : 히스토리가 긴 대규모 저장소의 경우을 --depth=1사용할 때 옵션 을 추가하려고 합니다 git fetch.

참고 2 : 이 명령은 다른 원격 저장소와도 작동하므로 포크로 작업중 originupstream경우 및를 설정할 수 있습니다 .


반대 시나리오 : 원격 브랜치에서 로컬 브랜치 중 하나를 원격 브랜치에서 로컬 브랜치로 병합하려는 경우 (위 그림 참조) 먼저 원격 브랜치 위에 로컬 브랜치 를 만들어야합니다 .

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

여기서 아이디어는 "로컬 브랜치 중 하나"(여기 anotherLocalBranch)를 원격 브랜치 ( origin/aBranch) 에 병합하는 것입니다 .
이를 위해 첫 번째 " myBranch"을 (를) 해당 원격 브랜치를 나타내는 것으로 만듭니다 git checkout -b myBranch origin/aBranch. 이것이 부분입니다.
그런 다음anotherLocalBranch (to myBranch)로 병합 할 수 있습니다 .


aLocalBranch? 오타입니까? "myBranch"를 다시 써야한다고 생각하십니까?
knocte

1
@knocte No : "원격 브랜치 중 하나에 로컬 브랜치 중 하나를 병합하려는 경우": " aLocalBranch"를 " myBranch"로 병합하여 " "가 myBranch원격 브랜치를 나타냅니다 origin/aBranch.
VonC

@VonC를 귀찮게해서 죄송합니다. 이전 의견 aLocalBranch에서 오타가 아니라고 말하지만 이 "확실한 오타"를 수정하는 최신 편집 (2 년 후!)을 승인했습니다. 편집을 취소하기 전에 확인하고 싶었습니다.
rath

1
@rath 당신은 맞습니다 : 부주의에 경계를두고 약간 성급하게 편집을 검토 한 것으로 보입니다. 두 번째 병합 사례를 명확히하기 위해 답변을 편집했습니다. 이것이 더 분명한지 말해 줄 수 있습니까?
VonC

91

병합을 수행 할 때마다 병합하려는 지점 (예 : " git checkout branch-i-am-working-in")에 들어가서 다음을 수행합니다.

git merge origin/branch-i-want-to-merge-from


2
네가 먼저해야 할 것 같아 git fetch origin/branch-i-want-to-merge-from?
Hinrich

9
git fetch origin develop다음git merge origin/develop
올리비에

2
@Olivier 당신이 맞습니다, 이것이 올바른 방법입니다. git merge 혼자서는하지 않습니다.
Sam

1
이해하는 데 도움이되는 영리한 명명 규칙에 감사드립니다
tony2tones

1
@Akira는 그렇지 않습니다 git add .-> git commit -m <message>-> git push -u origin <branch>?
Cloud Cho

24

원점에서 먼저 원격 브랜치를 가져옵니다.

git fetch origin remote_branch_name

원격 지점을 로컬 지점에 병합

git merge origin/remote_branch_name

1
수락 된 답변이 우리가 병합 할 수있는 것이 아니라고보고했을 때 나에게 도움이되었습니다. 필자의 경우 GitHub의 다른 사용자 포크에서 내 리포지토리를 병합하고있었습니다.
SJT

첫 번째 명령을 가져와야합니까? 'git merge origin / remote_branch_name'은 로컬이 아닌 원격 브랜치에서 읽습니다. 그래서 상관하지 않아야합니다. 지역 지점이 업데이트됩니까?
Michael Freidgeim

20

로컬 지점으로 원격 지점 을 추적 하고 싶을 수도 있습니다 .

  1. 새로운 지역 지점을 만듭니다. git branch new-local-branch
  2. 이 새로 작성된 분기를 설정하여 원격 분기를 추적하십시오. git branch --set-upstream-to=origin/remote-branch new-local-branch
  3. 이 지점에 입력하십시오 : git checkout new-local-branch
  4. 원격 브랜치의 모든 내용을 로컬 브랜치로 가져옵니다. git pull

3

이미 원격 지사를 가져 및한다면 git branch -a,
당신은 뭔가를 얻을 :

* 8.0
  xxx
  remotes/origin/xxx
  remotes/origin/8.0
  remotes/origin/HEAD -> origin/8.0
  remotes/rep_mirror/8.0

그런 rep_mirror/8.0다음 원격 지사를 로컬로 지정 하는 데 사용할 수 있습니다 .

속임수는 remotes/rep_mirror/8.0작동하지 않지만 작동 rep_mirror/8.0합니다.

따라서 git merge -m "my msg" rep_mirror/8.0병합 과 같은 명령이 있습니다.

(참고 : 이것은 @VonC 답변에 대한 주석입니다. 코드 블록이 주석 형식에 맞지 않기 때문에 다른 답변으로 넣었습니다)

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