git push
git remoto / git fetch / git push / git pull
El git push
comando se utiliza para cargar el contenido del repositorio local en un repositorio remoto. Empujar es cómo transfieres las confirmaciones de tu repositorio local a un repositorio remoto. Es la contraparte de git fetch
, pero mientras que la obtención de las importaciones se compromete con las sucursales locales, las exportaciones se envÃan a las sucursales remotas. Las ramas remotas se configuran mediante el git remote
comando. Empujar tiene el potencial de sobrescribir cambios, se debe tener cuidado al empujar. Estos problemas se analizan a continuación.
Uso de Git push
git push <remote> <branch>
Empuje la rama especificada para , junto con todas las confirmaciones necesarias y los objetos internos. Esto crea una sucursal local en el repositorio de destino. Para evitar que sobrescriba las confirmaciones, Git no le permitirá presionar cuando resulte en una fusión que no sea de avance rápido en el repositorio de destino.
git push <remote> --force
Igual que el comando anterior, pero fuerce el empuje incluso si da como resultado una combinación que no sea de avance rápido. No use la --force
bandera a menos que esté absolutamente seguro de saber lo que está haciendo.
git push <remote> --all
Empuje todas sus sucursales locales al control remoto especificado.
git push <remote> --tags
Las etiquetas no se insertan automáticamente cuando empuja una rama o usa la --all
opción. La --tags
bandera envÃa todas sus etiquetas locales al repositorio remoto.
Discusión de Git push
git push
se utiliza más comúnmente para publicar y cargar cambios locales en un repositorio central. Una vez que se ha modificado un repositorio local, se ejecuta una inserción para compartir las modificaciones con los miembros del equipo remoto.

El diagrama anterior muestra lo que sucede cuando su local master
ha progresado más allá del repositorio central master
y usted publica los cambios ejecutando git push origin master
. Observe cómo git push
es esencialmente lo mismo que ejecutar git merge master
desde el interior del repositorio remoto.
Git push y sincronización
git push
es uno de los muchos componentes que se utilizan en el proceso general de "sincronización" de Git. Los comandos de sincronización operan en ramas remotas que se configuran mediante el git remote
comando. git push
se puede considerar un comando 'cargar' mientras que, git fetch
y git pull
se puede considerar como comandos 'descargar'. Una vez que los conjuntos de cambios se han movido a través de una descarga o carga, git merge
se puede realizar una en el destino para integrar los cambios.
Empujar a repositorios desnudos
Una práctica moderna de Git que se usa con frecuencia es tener un --bare
repositorio alojado de forma remota que actúe como un repositorio de origen central. Este repositorio de origen a menudo se aloja fuera del sitio con un tercero de confianza como Bitbucket. Dado que la inserción de problemas con la estructura de la rama remota, es más seguro y común enviar a los repositorios que se han creado con la --bare
bandera. Los repositorios desnudos no tienen un directorio de trabajo, por lo que una inserción no alterará el contenido del directorio de trabajo en curso. Para obtener más información sobre la creación de repositorios básicos, lea sobre git init
.
Fuerza empujando
Git evita que sobrescriba el historial del repositorio central al rechazar las solicitudes de inserción cuando dan como resultado una combinación que no es de avance rápido. Por lo tanto, si el historial remoto ha diferido de su historial, debe extraer la rama remota y fusionarla con la local, luego intente presionar nuevamente. Esto es similar a cómo SVN lo sincroniza con el repositorio central a través de svn update
antes de confirmar un conjunto de cambios.
La --force
bandera anula este comportamiento y hace que la rama del repositorio remoto coincida con la local, eliminando cualquier cambio ascendente que pueda haber ocurrido desde la última vez que lo extrajo. La única vez que deberÃa necesitar forzar el empuje es cuando se da cuenta de que las confirmaciones que acaba de compartir no eran del todo correctas y las solucionó con una git commit --amend
o una rebase interactiva. Sin embargo, debes estar absolutamente seguro de que ninguno de tus compañeros de equipo ha realizado esas confirmaciones antes de usar la --force
opción.
Ejemplos
Git push predeterminado
El siguiente ejemplo describe uno de los métodos estándar para publicar contribuciones locales en el repositorio central. Primero, se asegura de que su maestro local esté actualizado al obtener la copia del repositorio central y reajustar sus cambios encima de ellos. La rebase interactiva también es una buena oportunidad para limpiar sus confirmaciones antes de compartirlas. Luego, el git push
comando envÃa todas las confirmaciones en su maestro local al repositorio central.
git checkout master
git fetch origin master
git rebase -i origin/master
# Squash commits, fix up commit messages etc.
git push origin master
Dado que ya nos aseguramos de que el maestro local estuviera actualizado, esto deberÃa dar como resultado una fusión de avance rápido y git push
no deberÃa quejarse de ninguno de los problemas que no son de avance rápido discutidos anteriormente.
Empuje de fuerza modificado
El git commit
comando acepta una --amend
opción que actualizará la confirmación anterior. Una confirmación a menudo se modifica para actualizar el mensaje de confirmación o agregar nuevos cambios. Una vez que se modifica una confirmación git push
, fallará porque Git verá la confirmación modificada y la confirmación remota como contenido divergente. La --force
opción debe usarse para enviar una confirmación modificada.
# make changes to a repo and git add
git commit --amend
# update the existing commit message
git push --force origin master
El ejemplo anterior asume que se está ejecutando en un repositorio existente con un historial de confirmación. git commit --amend
se utiliza para actualizar la confirmación anterior. La confirmación modificada se fuerza a empujar usando la --force
opción.
Eliminar una rama o etiqueta remota
A veces, las sucursales deben limpiarse con fines de contabilidad o de organización. Para eliminar completamente una rama, debe eliminarse localmente y también de forma remota.
git branch -D branch_name
git push origin :branch_name
Lo anterior eliminará la rama remota denominada branch_name pasando un nombre de rama con el prefijo de dos puntos para git push
eliminar la rama remota.
Last updated
Was this helpful?