Git에서 오리진 / 마스터와 오리진 마스터의 차이점은 무엇입니까?


290

나는 원산지 가 원격 저장소의 용어이고 마스터 는 그곳의 지점 이라는 것을 알고 있습니다.

나는 여기서 "컨텍스트"를 의도적으로 생략하고 있고 그 대답이 문맥에 의존해서는 안되기를 바라고있다. 따라서 git 명령 줄에서 origin / masterorigin master 의 차이점은 무엇입니까 ? 언제 출발지 / 마스터 를 사용 해야하는지, 언제 출발지 마스터를 사용해야하는지 이해하는 명확한 방법이 있습니까?


답변:


392

여기에는 실제로 세 가지가 있습니다. origin master두 개의 분리 된 origin/master것입니다. 세 가지가 있습니다.

두 가지 :

  • master 현지 지점입니다
  • origin/master원격 지점 ( 원격 "origin"에있는 "master"라는 지점 의 로컬 사본 임)

하나의 리모컨 :

  • origin 리모컨이다

예 : 두 단계를 당겨

origin/master지점 이므로 병합 할 수 있습니다. 다음은 두 단계로 진행됩니다.

1 단계, master리모컨에서 가져옵니다 origin. master지점에이 origin인출되며 로컬 복사본이 지정됩니다 origin/master.

git fetch origin master

그런 다음에 병합 origin/master합니다 master.

git merge origin/master

그런 다음 새로운 변경 사항을 다음으로 master되돌릴 수 있습니다 origin.

git push origin master

더 많은 예

당신은 이름으로 여러 가지를 가져올 수 있습니다 ...

git fetch origin master stable oldstable

여러 가지를 병합 할 수 있습니다 ...

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

5
첫 번째 부분은 정말 유용합니다. 더 많은 예제, 특히 병합 예제가 적용 가능한 방법을 연결할 수 없습니다. 답변 해주셔서 감사합니다.
Senthil Kumaran

1
... "git checkout origin / master"때 분리 된 헤드 상태가됩니다. 실제로 원격 마스터 브랜치의 로컬 사본을 가지고 있다면, 왜 작업하고 커밋하여 추가 할 수 없습니까? 아니면 가능하지만 왜 분리되어 있습니까?
stu mar

3
로컬 브랜치에만 커밋 할 수 있으므로 원격 브랜치를 체크 아웃하면 "분리 된 헤드"가 나타납니다. 물론 원격 지사의 로컬 복사본이지만 여전히 원격 지사입니다. "마스터"가 "원산지 / 마스터"와 관련이 있다는 규칙은 없으며 완전히 다를 수 있습니다.
Dietrich Epp

7
@ Jwan622 "origin is a remote"... "origin"은 이름입니다. 리모컨의 이름을 선택할 수 있지만 "origin"은 기본 이름입니다. 원격은 다른 곳의 저장소입니다. GitHub이거나 다른 컴퓨터 일 수도 있고 같은 컴퓨터의 다른 곳에있을 수도 있습니다.
Dietrich Epp

2
@ Jwan622 : "git remote add"는 새 리모컨을 만드는 명령입니다. "origin"은 리모트가 추가 한 이름입니다. "원산지"는 단지 이름이므로 원하는 경우 다른 이름을 선택할 수 있습니다. 예를 들어, git remote add home my-server:projects/my-project이름이 "home"인 원격을 추가합니다. git-scm.com/docs/git-remote
Dietrich Epp

16

origin/masterremote 의 분기 상태를 나타내는 엔티티 (실제 분기가 아니므로) 입니다.masterorigin

origin mastermaster리모컨 의 분기 입니다 origin.

그래서 우리는 이것들을 가지고 있습니다 :

  • 원산지 / 마스터 (원격 지사에 대한 표현 또는 포인터)
  • 마스터-( 실제 지점 )
  • <Your_local_branch> ( 실제 지점 )
  • <Your_local_branch2> ( 실제 지점 )
  • <Your_local_branch3> ( 실제 지점 )

예 (현지 지점 master) :

git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master

24
이것은 잘못입니다 ... origin master지점이 아닙니다 ... 실제로 "원점"(원격)과 "마스터"(지역 지점)의 두 가지가 있습니다.
Dietrich Epp

원격 마스터 브랜치의 상태는 로컬에 있습니까?
Senthil Kumaran

4
예, 이것은 origin/master원격 마스터 브랜치입니다. 현지 지점은 마스터입니다.
Aniket Thakur

5

origin/master원격 master지점입니다

일반적으로 git fetch origin서버에서 모든 변경 사항을 가져 오기 위해 a 를 수행 한 후에 는 변경 사항 git rebase origin/master을 리베이스하고 분기를 최신 인덱스로 이동합니다. 여기서는 origin/master기본적으로 GIT에 origin/master분기를 현재 분기에 리베이스하도록 지시하기 때문에 원격 분기를 참조합니다 .

origin master예를 들어 밀 때 사용할 수 있습니다 . git push origin master단순히 원격 저장소에 로컬 master지점 을 푸시하도록 GIT에 지시합니다 .


2
이것은 실제로 OP가 찾고있는 것에 가장 가까운 것 같습니다- origin master소프트웨어가 '원본'저장소의 '마스터'에있는 모든 것을 수행하도록 지시합니다. origin/master같은 방법으로 f3a4d5또는 HEAD입니다.
Nemesarial

4

origin은 원격 자식 URL의 이름입니다. 아래에 더 많은 리모컨이있을 수 있습니다.

bangalore => bangalore.example.com:project.git

boston => boston.example.com:project.git

원산지 / 마스터 (예 : 방갈로르 / 마스터)가 진행되는 한 방갈로르 사이트 에서 "마스터"커밋에 대한 포인터 입니다. 클론에서 볼 수 있습니다.

"fetch"또는 "pull"을 수행 한 후 원격 방갈로르가 진행되었을 수 있습니다.


2

origin/master네트워크 케이블을 분리 한 상태에서 (분리 된 상태로) 전환 할 수 있다는 사실을 고려할 때의 master지점을 로컬로 표시해야합니다 origin.


위와 아래의 답변에서 사람들은 origin / master가 원격 마스터 지점이라고 말합니다. 당신의 대답은 그들이 말하는 것과 모순됩니다. 설명 해주세요.
Luna Lovegood
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.