O que é "origem" no Git?

583

Quando eu corro:

git push origin branchname

O que exatamente é origine por que tenho que digitá-lo antes do nome do ramo?

encantar
fonte
63
"origem" é o nome do repositório remoto no qual você deseja publicar e confirma. Por convenção, o repositório remoto padrão é chamado "origem", mas você pode trabalhar com vários controles remotos (com nomes diferentes) ao mesmo tempo. Mais informações aqui (por exemplo): gitref.org/remotes
Benoit Courtine
1
Observe também que a origem é um
repositório
Porém, ao usar o git fetch e o git branch -r, os branches locais são anexados com origem / ugh: - / atlassian.com/git/tutorials/syncing/git-fetch
brat
Faça o checkout do arquivo .git \ config, que contém os mapeamentos de aliases para URLs, a pasta .git está oculta por padrão.
Abhijeet Patel

Respostas:

569

originé um alias no seu sistema para um repositório remoto específico. Na verdade, não é uma propriedade desse repositório.

Fazendo

git push origin branchname

você está dizendo para enviar para o originrepositório. Não há necessidade de nomear o repositório remoto origin: na verdade, o mesmo repositório pode ter um alias diferente para outro desenvolvedor.

Os controles remotos são simplesmente um alias que armazena a URL dos repositórios. Você pode ver qual URL pertence a cada controle remoto usando

git remote -v

No pushcomando, você pode usar controles remotos ou simplesmente usar um URL diretamente. Um exemplo que usa a URL:

git push [email protected]:git/git.git master
doelleri
fonte
1
Um único controle remoto pode ser um alias para vários outros controles remotos? E se eu quisesse que um controle remoto passasse para vários outros controles remotos? Por exemplo, enviar para um repositório primário e enviar para um repositório de backup? Seria algo razoável querer em algumas situações? EDIT: Existem várias soluções aqui .
Yankee
1
E se eu omitir a palavra-chave "origem"? Quando dizemos "git push", ele não enviará todas as confirmações para o repositório remoto? Adicionar a palavra-chave "origem" parece redundante.
Mugen
@Mugen Nos documentos, git pushvocê pode ver que ele primeiro verifica a configuração desse repositório (com a qual você pode verificar git config --list) uma chave chamada branch.<branchname>.remote. Se isso não for definido, "o padrão é de origem" - git-scm.com/docs/git-push
Kenmore
157

originnão é o nome do repositório remoto. É um alias local definido como uma chave no lugar da URL do repositório remoto.

Isso evita que o usuário digite toda a URL remota ao solicitar um push.

Esse nome é definido por padrão e por convenção do Git ao clonar de um controle remoto pela primeira vez.

Esse nome alternativo não é codificado e pode ser alterado usando o seguinte prompt de comando:

git remote rename origin mynewalias

Veja http://git-scm.com/docs/git-remote para mais esclarecimentos.

Antoine Meltzheim
fonte
1
E se eu omitir a palavra-chave "origem"? Quando dizemos "git push", ele não enviará todas as confirmações para o repositório remoto? Adicionar a palavra-chave "origem" parece redundante.
Mugen
74

O Git tem o conceito de "controles remotos", que são simplesmente URLs para outras cópias do seu repositório. Quando você clona outro repositório, o Git cria automaticamente um controle remoto chamado "origem" e aponta para ele.

Você pode ver mais informações sobre o controle remoto digitando git remote show origin.

Jason Malinowski
fonte
1
Os comandos git são muito confusos para iniciantes. Eu acho que tem a ver com a história deste sistema de controle de versão. Então, pergunta: em vez de git remote show origin, por que não simplesmente git show origin? Deve haver uma razão, o que é isso? Obrigado.
Stack0verflow
5
@ Stack0verflow: provavelmente é melhor perguntar como uma nova pergunta para que as pessoas possam fazer a pesquisa, se você estiver curioso. 'show git' já é um outro comando que mostra uma consolidação, e tecnicamente nada iria impedi-lo ter uma filial chamada 'origem', além de ter uma origem remota chamada ...
Jason Malinowski
44

originé o alias padrão para a URL do seu repositório remoto.

Jude Calimbas
fonte
24

Simples! "origem" é exatamente o que você apelidou de seu repositório remoto quando você executou um comando como este:

git remote add origin [email protected]:USERNAME/REPOSITORY-NAME.git

A partir de então, o Git sabe que "origem" aponta para esse repositório específico (neste caso, um repositório GitHub). Você poderia chamá-lo de "github" ou "repo" ou o que quisesse.

Trev14
fonte
19

Também fiquei confuso com isso, e abaixo está o que aprendi.

Quando você clona um repositório, por exemplo, no GitHub:

  • originé o alias da URL da qual você clonou o repositório. Observe que você pode alterar esse alias.

  • Há uma masterramificação no repositório remoto (alias de origin). Há também outro masterramo criado localmente.

Informações adicionais podem ser encontradas nesta pergunta do SO: Ramificação do Git: mestre vs. origem / mestre vs. controles remotos / origem / mestre

umesh prakash bapat
fonte
11

Quando você clona um repositório git clone, ele cria automaticamente uma conexão remota chamada originapontando para o repositório clonado. Isso é útil para desenvolvedores que criam uma cópia local de um repositório central, pois fornece uma maneira fácil de obter alterações upstream ou publicar confirmações locais. Esse comportamento também é o motivo pelo qual a maioria dos projetos baseados em Git chama sua origem de repositório central.

Volodymyr
fonte
3

A melhor resposta aqui:

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

No Git, "origem" é um nome abreviado para o repositório remoto do qual um projeto foi originalmente clonado. Mais precisamente, ele é usado no lugar da URL do repositório original - e, portanto, facilita muito a referência.

Alexander Shapkin
fonte
0

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

No Git, "origem" é um nome abreviado para o repositório remoto do qual um projeto foi originalmente clonado. Mais precisamente, ele é usado no lugar da URL do repositório original - e, portanto, facilita muito a referência.

Observe que a origem não é de forma alguma um nome "mágico", mas apenas uma convenção padrão. Embora faça sentido deixar essa convenção intocada, você pode renomeá-la perfeitamente sem perder nenhuma funcionalidade.

No exemplo a seguir, o parâmetro da URL para o comando "clone" se torna a "origem" do repositório local clonado:

git clone https://github.com/gittower/git-crash-course.git
Deeksha Sharma
fonte
Ao copiar conteúdo escrito por outras pessoas, você deve deixar claro que está fazendo isso e sempre deve incluir um link para a fonte. Caso contrário, é plágio e é uma razão para excluir a resposta. Além disso, sua resposta já havia sido postada .
Fabio diz Restabelecer Monica
0

As outras respostas dizem que originé um alias para o URL de um repositório remoto que não é totalmente exato. Note-se que um endereço que começa com httpé um URL, enquanto um que começa com git@é um URI ou um Universal Resource Identifier.

Todos os URLs são URIs, mas nem todos os URIs são URLs.

Em resumo, quando você digita, git remote add origin <URI>está dizendo ao git local que, sempre que usar a palavra, originvocê realmente quer dizer o URI que você especificou. Pense nisso como uma variável que possui um valor.

E, assim como uma variável, você pode nomeá-lo o que quiser (por exemplo. github, heroku, destination, Etc).

Andy Lindsay
fonte
0

remoto (alias do URL do repositório) → origem (alias upstream) → mestre (alias da ramificação);

  • remote, Nível igual working directory, index, repository,

  • origin, mapa da ramificação do repositório local para ramificação do repositório remoto

山 茶树 和 葡萄
fonte