힘내에서 "원산지"는 무엇입니까?


582

내가 실행할 때 :

git push origin branchname

정확히 무엇 origin이며 왜 브랜치 이름 앞에 입력해야합니까?


63
"origin"은 커밋을 게시하려는 원격 저장소의 이름입니다. 기본적으로 기본 원격 저장소는 "origin"이라고하지만 여러 이름 (다른 이름의)으로 동시에 작업 할 수 있습니다. 자세한 내용은 여기 (예를 들어) : gitref.org/remotes
벤와 Courtine

1
또한 출처는 "업스트림"저장소라는 점에 유의하십시오. stackoverflow.com/questions/2739376/…
VonC


/ - :하지만 현지 지사가 원산지 / 우 앞에 추가되는 -r 가져 오기 다음 자식 지점 힘내 사용하는 경우 atlassian.com/git/tutorials/syncing/git-fetch
말괄량이

.git \ config 파일에서 URL에 대한 별칭 매핑이 포함 된 .git \ config 파일을 체크 아웃하십시오. .git 폴더는 기본적으로 숨겨져 있습니다.
Abhijeet Patel

답변:


568

origin특정 원격 저장소 에 대한 시스템별명 입니다 . 실제로 해당 저장소의 속성이 아닙니다.

함으로써

git push origin branchname

당신은 origin저장소 로 밀어 말하고 있습니다. 원격 저장소의 이름을 origin지정할 필요는 없습니다. 실제로 동일한 저장소가 다른 개발자에 대해 다른 별명을 가질 수 있습니다.

리모트는 단순히 저장소의 URL을 저장 하는 별명 입니다. 다음을 사용하여 각 리모컨에 속한 URL을 볼 수 있습니다

git remote -v

에서 push명령, 당신이 사용할 수있는 리모컨을 하거나 간단하게 사용할 수있는 URL을 직접. URL을 사용하는 예 :

git push git@github.com:git/git.git master

1
단일 리모컨이 다른 여러 리모컨의 별칭 일 수 있습니까? 하나의 리모컨으로 여러 개의 다른 리모컨을 사용하려면 어떻게해야합니까? 예를 들어, 기본 리포지토리로 푸시하고 백업 리포지토리로 푸시합니까? 어떤 상황에서는 이것이 합리적일까요? 편집 : 여기에 몇 가지 해결책이 있습니다 .
양키

1
"origin"키워드를 생략하면 어떻게됩니까? 우리가 "git push"라고 말할 때, 어쨌든 모든 커밋을 원격 저장소로 푸시하지 않습니까? 키워드 "origin"을 추가하는 것은 중복 된 것 같습니다.
Mugen

@Mugen이 문서에서 git push먼저 git config --list라는 키의 저장소에 대한 구성 (확인할 수있는 )을 확인 함을 알 수 있습니다 branch.<branchname>.remote. 설정되지 않은 경우 "기본값은 원점" -git-scm.com/docs/git-push
Kenmore

156

origin원격 저장소 이름 이 아닙니다 . 원격 저장소 URL 대신 키로 설정된 로컬 별명 입니다.

푸시 메시지를 표시 할 때 사용자가 전체 원격 URL을 입력하지 않아도됩니다.

이 이름은 기본적으로 원격에서 처음 복제 할 때 Git에 의해 설정됩니다.

이 별명 이름은 하드 코딩되지 않았으며 다음 명령 프롬프트를 사용하여 변경할 수 있습니다.

git remote rename origin mynewalias

자세한 설명 은 http://git-scm.com/docs/git-remote참조 하십시오 .


1
"origin"키워드를 생략하면 어떻게됩니까? 우리가 "git push"라고 말할 때, 어쨌든 모든 커밋을 원격 저장소로 푸시하지 않습니까? 키워드 "origin"을 추가하는 것은 중복 된 것 같습니다.
Mugen

74

Git은 "원격"이라는 개념을 가지고 있는데, 이는 단순히 다른 저장소 사본의 URL입니다. 다른 저장소를 복제하면 Git은 자동으로 "origin"이라는 이름의 원격을 생성하고 가리 킵니다.

을 입력하여 리모컨에 대한 자세한 정보를 볼 수 있습니다 git remote show origin.


1
git 명령은 초보자에게 매우 혼란 스럽습니다. 이 버전 제어 시스템의 역사와 관련이 있다고 생각합니다. 따라서 질문 : 대신에 git remote show origin왜 간단하지 git show origin않습니까? 이유가 있어야합니다. 무엇입니까? 감사.
Stack0verflow

5
@ Stack0verflow : 아마도 궁금한 점이 있으면 사람들이 연구를 할 수 있도록 새로운 질문으로하는 것이 좋습니다. 'git show'는 이미 커밋을 보여주는 또 다른 명령이며, 기술적으로 아무것도 원점이라고 불리는 것 외에도 'origin'이라는 브랜치를 갖는 것을 막을 수는 없습니다.
Jason Malinowski


24

단순한! "origin"은 다음과 같은 명령을 실행할 때 원격 저장소의 별명입니다.

git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git

그때부터 Git은 "origin"이 특정 저장소 (이 경우 GitHub 저장소)를 가리키는 것을 알고 있습니다. "github"또는 "repo"또는 원하는 이름으로 지정할 수 있습니다.


19

나는 이것으로 혼란 스러웠으며 아래는 내가 배운 것입니다.

저장소를 복제 할 때 (예 : GitHub에서) :

  • origin리포지토리를 복제 한 URL의 별칭입니다. 이 별명을 변경할 수 있습니다.

  • master원격 저장소에 가 하나의 분기 가 있습니다 (별명으로 표시 origin). master로컬로 생성 된 다른 브랜치 도 있습니다.

자세한 내용은이 SO 질문에서 찾을 수 있습니다 : Git 분기 : 마스터 대 원산지 / 마스터 대 리모트 / 원산지 / 마스터


11

로 리포지토리를 복제하면 복제 된 리포지토리를 다시 가리키는 git clone원격 연결이 자동으로 생성됩니다 origin. 이는 중앙 리포지토리의 로컬 복사본을 만드는 개발자에게 유용합니다. 업스트림 변경을 가져 오거나 로컬 커밋을 게시하는 쉬운 방법을 제공하기 때문입니다. 이 동작은 대부분의 Git 기반 프로젝트가 중앙 저장소 원점을 호출하는 이유이기도합니다.



0

에서 https://www.git-tower.com/learn/git/glossary/origin :

Git에서 "origin"은 프로젝트가 원래 복제 된 원격 저장소의 약칭입니다. 보다 정확하게는 원래 리포지토리의 URL 대신 사용되므로 훨씬 쉽게 참조 할 수 있습니다.

원점은 "마법의"이름이 아니라 표준 규칙 일뿐입니다. 이 컨벤션은 그대로 유지하는 것이 합리적이지만 기능을 잃지 않고 완벽하게 이름을 바꿀 수 있습니다.

다음 예에서 "clone"명령에 대한 URL 매개 변수는 복제 된 로컬 저장소의 "origin"이됩니다.

git clone https://github.com/gittower/git-crash-course.git

다른 사람이 작성한 컨텐츠를 복사 할 때는 자신이 그렇게하고 있음을 분명히하고 항상 소스에 대한 링크를 포함해야합니다. 그렇지 않으면 표절이므로 답을 삭제해야합니다. 또한 귀하의 답변 이 이미 게시되었습니다 .
Fabio는 Reinstate Monica가

0

다른 답변은 그것이 완전히 정확하지 않은 원격 저장소 originURL 에 대한 별칭 이라고 말합니다 . 로 시작하는 주소 http는 URL 인 반면 URL로 시작하는 주소 git@URI 또는 Universal Resource Identifier입니다.

모든 URL이 URI이지만 모든 URI가 URL 인 것은 아닙니다.

간단히 말해서, 입력 git remote add origin <URI>할 때 단어 origin를 사용할 때마다 실제로 지정한 URI를 의미한다고 로컬 자식에게 알리고 있습니다 . 값을 보유하는 변수처럼 생각하십시오.

단지 변수처럼, 당신은 당신이 원하는대로 그 이름을 지정할 수 있습니다 (예 :. github, heroku, destination, 등).


0

원격 (저장소 URL 별명) → 원산지 (업스트림 별명) → 마스터 (지점 별명);

  • remote레벨과 동일 working directory, index, repository,

  • origin로컬 저장소 분기 를 원격 저장소 분기에 맵핑

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