Buscar..


Introducción

Después de cambiar, configurar y confirmar el código con Git, se requiere un empuje para hacer que sus cambios estén disponibles para otros y transferir sus cambios locales al servidor de repositorio. Este tema cubrirá cómo insertar correctamente el código usando Git.

Sintaxis

  • git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]

Parámetros

Parámetro Detalles
--fuerza Sobrescribe la referencia remota para que coincida con la referencia local. Puede hacer que el repositorio remoto pierda confirmaciones, así que úselo con cuidado .
--verboso Corre verbalmente.
<remote> El repositorio remoto que es el destino de la operación de inserción.
<refspec> ... Especifique qué referencia remota se actualizará con qué referencia local u objeto.

Observaciones

Río arriba Río abajo

En términos de control de fuente, usted está "en la corriente descendente" cuando copia (clona, ​​realiza el pago, etc.) desde un repositorio. La información fluyó "hacia abajo" hacia ti.

Cuando realiza cambios, generalmente desea enviarlos de vuelta "en sentido ascendente" para que ingresen en ese repositorio, de modo que todos los que proceden de la misma fuente trabajen con los mismos cambios. Esto es principalmente un problema social de cómo todos pueden coordinar su trabajo en lugar de un requisito técnico de control de fuente. Desea incluir sus cambios en el proyecto principal para no seguir líneas de desarrollo divergentes.

A veces, leerá sobre los administradores de paquetes o versiones (las personas, no la herramienta) hablando sobre el envío de cambios a "upstream". Eso generalmente significa que tuvieron que ajustar las fuentes originales para poder crear un paquete para su sistema. No quieren seguir haciendo esos cambios, por lo que si los envían "en sentido ascendente" a la fuente original, no deberían tener que lidiar con el mismo problema en la próxima versión.

( Fuente )

empujar

git push

empujará su código a su corriente arriba. Dependiendo de la configuración de inserción, empujará el código de su rama actual (por defecto en Git 2.x) o de todas las ramas (por defecto en Git 1.x).

Especificar repositorio remoto

Cuando se trabaja con git, puede ser útil tener varios repositorios remotos. Para especificar un repositorio remoto para enviar, simplemente agregue su nombre al comando.

git push origin

Especificar rama

Para empujar a una rama específica, diga feature_x :

git push origin feature_x

Establecer la rama de seguimiento remoto

A menos que la rama en la que está trabajando originalmente provenga de un repositorio remoto, simplemente el uso de git push no funcionará la primera vez. Debe ejecutar el siguiente comando para decirle a git que empuje la rama actual a una combinación remota / rama específica

git push --set-upstream origin master

Aquí, master es el nombre de la rama en el origin remoto. Puede usar -u como una abreviatura de --set-upstream .


Empujando a un nuevo repositorio

Para enviar a un repositorio que aún no ha creado, o está vacío:

  1. Cree el repositorio en GitHub (si corresponde)
  2. Copie la url que recibió, en el formulario https://github.com/USERNAME/REPO_NAME.git
  3. Vaya a su repositorio local y ejecute git remote add origin URL
    • Para verificar que fue agregado, ejecute git remote -v
  4. Ejecutar git push origin master

Tu código debería estar ahora en GitHub

Para más información ver Agregar un repositorio remoto


Explicación

El código de inserción significa que git analizará las diferencias de sus confirmaciones locales y remotas y las enviará para que se escriban en el sentido ascendente. Cuando push se realiza correctamente, su repositorio local y el repositorio remoto se sincronizan y otros usuarios pueden ver sus confirmaciones.

Para obtener más detalles sobre los conceptos de "upstream" y "downstream", consulte Comentarios .

Fuerza de empuje

A veces, cuando tiene cambios locales incompatibles con los cambios remotos (es decir, cuando no puede avanzar rápidamente la rama remota, o la rama remota no es un antecesor directo de su rama local), la única forma de impulsar sus cambios es forzando .

git push -f

o

git push --force

Notas importantes

Esto sobrescribirá cualquier cambio remoto y su control remoto coincidirá con su local.

Atención: el uso de este comando puede hacer que el repositorio remoto pierda confirmaciones . Además, se recomienda encarecidamente que no ejerza un impulso forzoso si está compartiendo este repositorio remoto con otros, ya que su historial conservará cada compromiso sobrescrito, lo que hace que su trabajo no esté sincronizado con el repositorio remoto.

Como regla general, solo forzar empuje cuando:

  • Nadie, excepto usted, hizo los cambios que está intentando sobrescribir.
  • Puede forzar a todos a clonar una copia nueva después del empuje forzado y hacer que todos apliquen sus cambios (las personas pueden odiarlo por esto).

Empuje un objeto específico a una rama remota

Sintaxis general

git push <remotename> <object>:<remotebranchname>

Ejemplo

git push origin master:wip-yourname

Llevará su rama maestra a la rama de origen de wip-yourname (la mayoría de las veces, el repositorio desde el que clonó).


Eliminar rama remota

Eliminar la rama remota equivale a empujar un objeto vacío hacia ella.

git push <remotename> :<remotebranchname>

Ejemplo

git push origin :wip-yourname

Se eliminará la rama remota wip-yourname

En lugar de usar los dos puntos, también puede usar la marca --delete, que en algunos casos se puede leer mejor.

Ejemplo

git push origin --delete wip-yourname

Empuje un solo commit

Si tiene una única confirmación en su rama que desea enviar a un control remoto sin presionar otra cosa, puede usar lo siguiente

git push <remotename> <commit SHA>:<remotebranchname>

Ejemplo

Asumiendo una historia git como esta

eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local

para enviar solo el commit 347d700 al maestro remoto use el siguiente comando

git push origin 347d700:master

Cambiar el comportamiento de empuje por defecto

Actual actualiza la rama en el repositorio remoto que comparte un nombre con la rama de trabajo actual.

git config push.default current

Los impulsos simples a la rama ascendente, pero no funcionarán si la rama ascendente se llama otra cosa.

git config push.default simple

Empuja aguas arriba de la rama aguas arriba, no importa cómo se llama.

git config push.default upstream

Coincidencia empuja todas las ramas que coinciden en el local y el remoto git config push.default en sentido ascendente

Después de haber configurado el estilo preferido, use

git push 

para actualizar el repositorio remoto.

Etiquetas de empuje

git push --tags

Empuja todas las git tags en el repositorio local que no están en el remoto.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow