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


290

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

나는 여기서 "컨텍스트"를 의도적으로 생략하고 있고 그 대답이 문맥에 의존해서는 안되기를 바라고있다. 따라서 git 명령 줄에서 origin / master 와 origin 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.