¿Qué es el "origen" en Git?


583

Cuando corro:

git push origin branchname

¿Qué es exactamente originy por qué tengo que escribirlo antes del nombre de la sucursal?


63
"origen" es el nombre del repositorio remoto donde desea publicar sus confirmaciones. Por convención, el repositorio remoto predeterminado se llama "origen", pero puede trabajar con varios controles remotos (con diferentes nombres) al mismo tiempo. Más información aquí (por ejemplo): gitref.org/remotes
Benoit Courtine

1
Tenga en cuenta también que el origen es un repositorio "ascendente": consulte stackoverflow.com/questions/2739376/…
VonC


Pero luego, cuando se usa git fetch y luego git branch -r, las ramas locales se anteponen con origin / ugh: - / atlassian.com/git/tutorials/syncing/git-fetch
brat

Verifique el archivo .git \ config que contiene las asignaciones de alias a las URL, la carpeta .git está oculta de forma predeterminada.
Abhijeet Patel

Respuestas:


569

origines un alias en su sistema para un repositorio remoto particular. En realidad no es una propiedad de ese repositorio.

Haciendo

git push origin branchname

estás diciendo que empujes al originrepositorio. No es necesario nombrar el repositorio remoto origin: de hecho, el mismo repositorio podría tener un alias diferente para otro desarrollador.

Los controles remotos son simplemente un alias que almacena la URL de los repositorios. Puede ver qué URL pertenece a cada control remoto utilizando

git remote -v

En el pushcomando, puede usar controles remotos o simplemente puede usar una URL directamente. Un ejemplo que usa la URL:

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

1
¿Puede un solo control remoto ser un alias para varios controles remotos? ¿Qué sucede si quisiera que un control remoto pasara a varios controles remotos? Por ejemplo, ¿empujar a un repositorio primario y empujar a un repositorio de respaldo? ¿Sería una cosa razonable desear en algunas situaciones? EDITAR: Hay varias soluciones aquí .
Yankee

1
¿Qué sucede si omito la palabra clave "origen"? Cuando decimos "git push", ¿no va a enviar todos los commits al repositorio remoto? Agregar la palabra clave "origen" parece redundante.
Mugen

@Mugen En los documentos git push, puede ver que primero verifica la configuración de ese repositorio (con el que puede verificar git config --list) una clave llamada branch.<branchname>.remote. Si eso no está configurado, "el valor predeterminado es el origen" - git-scm.com/docs/git-push
Kenmore

157

originno es el nombre del repositorio remoto. Es más bien un alias local establecido como una clave en lugar de la URL del repositorio remoto.

Evita que el usuario tenga que escribir la URL remota completa al solicitar un empuje.

Este nombre se establece de forma predeterminada y por convención por Git cuando se clona desde un control remoto por primera vez.

Este nombre de alias no está codificado y podría cambiarse usando el siguiente símbolo del sistema:

git remote rename origin mynewalias

Eche un vistazo a http://git-scm.com/docs/git-remote para obtener más aclaraciones.


1
¿Qué sucede si omito la palabra clave "origen"? Cuando decimos "git push", ¿no va a enviar todos los commits al repositorio remoto? Agregar la palabra clave "origen" parece redundante.
Mugen

74

Git tiene el concepto de "controles remotos", que son simplemente URL a otras copias de su repositorio. Cuando clonas otro repositorio, Git crea automáticamente un control remoto llamado "origen" y lo apunta.

Puede ver más información sobre el control remoto escribiendo git remote show origin.


1
Los comandos de git son muy confusos para los principiantes. Supongo que tiene que ver con la historia de este sistema de control de versiones. Entonces, pregunta: en lugar de git remote show origin, ¿por qué no simplemente git show origin? Debe haber una razón, ¿qué es? Gracias.
Stack0verflow

55
@ Stack0verflow: esta pregunta probablemente sea mejor como una nueva pregunta para que las personas puedan investigar si tienes curiosidad 'git show' ya es otro comando que muestra un commit, y técnicamente nada te detendría a tener una rama llamada 'origin' además de tener un origen remoto llamado ...
Jason Malinowski


24

¡Simple! "origen" es justo lo que apodaste tu repositorio remoto cuando ejecutaste un comando como este:

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

A partir de entonces, Git sabe que "origen" apunta a ese repositorio específico (en este caso, un repositorio GitHub). Podrías haberlo llamado "github" o "repo" o lo que quisieras.


19

Esto también me confundió, y a continuación es lo que he aprendido.

Cuando clonas un repositorio, por ejemplo desde GitHub:

  • origines el alias de la URL desde la que clonó el repositorio. Tenga en cuenta que puede cambiar este alias.

  • Hay una masterrama en el repositorio remoto (con alias origin). También hay otra masterrama creada localmente.

Se puede encontrar más información en esta pregunta SO: bifurcación de Git: maestro vs. origen / maestro vs. controles remotos / origen / maestro


11

Cuando clona un repositorio con git clone, crea automáticamente una conexión remota llamada originapuntando hacia el repositorio clonado. Esto es útil para los desarrolladores que crean una copia local de un repositorio central ya que proporciona una manera fácil de realizar cambios ascendentes o publicar confirmaciones locales. Este comportamiento también es la razón por la cual la mayoría de los proyectos basados ​​en Git llaman a su origen de repositorio central.



0

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

En Git, "origen" es un nombre abreviado para el repositorio remoto del que se clonó originalmente un proyecto. Más precisamente, se usa en lugar de la URL de ese repositorio original, y por lo tanto hace referencia mucho más fácil.

Tenga en cuenta que el origen no es en absoluto un nombre "mágico", sino solo una convención estándar. Aunque tiene sentido dejar esta convención intacta, puede cambiarle el nombre perfectamente sin perder ninguna funcionalidad.

En el siguiente ejemplo, el parámetro URL para el comando "clonar" se convierte en el "origen" para el repositorio local clonado:

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

Cuando copie contenido escrito por otros, debe dejar en claro que lo está haciendo, y siempre debe incluir un enlace a la fuente. De lo contrario, es plagio, y es una razón para eliminar la respuesta. Además, tu respuesta ya había sido publicada .
Fabio dice reinstalar a Mónica el

0

Las otras respuestas dicen que origines un alias para la URL de un repositorio remoto que no es del todo exacto. Cabe señalar que una dirección que comienza con httpuna URL es una que comienza con git@un URI o identificador universal de recursos.

Todas las URL son URI, pero no todas las URI son URL.

En resumen, cuando escribes git remote add origin <URI>le estás diciendo a tu git local que cada vez que usas la palabra originte refieres al URI que especificaste. Piense en ello como una variable que tiene un valor.

Y al igual que una variable, puede que el nombre lo que quieras (por ejemplo. github, heroku, destination, Etc).


0

remoto (alias de URL de repositorio) → origen (alias ascendente) → maestro (alias de rama);

  • remote, Nivel mismo que working directory, index, repository,

  • origin, mapa de rama de repositorio local a rama de repositorio remoto

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.