Uno de los comandos esenciales y más usados de git es git push con el que podemos enviar nuestros commits a repositorios remotos.
Git Push
git push acepta dos argumentos:
- El nombre del repositorio remoto que tenemos configurado (git remote -v para comprobar cuales hemos configurado, o chequea aquí como añadir repositorios).
- El nombre del la rama de nuestro repositorio local que queremos enviar.
1 |
$ git push <repositorio_remoto> <rama_local> |
En caso de no indicar ninguno de los argumentos, git toma por defecto la rama actual en la que estemos ubicados y la el repositorio remoto que tengamos configurado.
1 |
$ git push origin head |
Cambiando el nombre a las ramas remotas
En caso que necesitemos hacer push de una rama pero queremos que esta se cargue con un nombre diferente también haremos uso del comando git push, pero tendremos que incluir un nuevo argumento que será el nombre de la rama remota que deseamos crear.
1 |
$ git push origin rama_local:rama:_nueva |
… Repositorio local no sincronizado?
Uno de los problemas con los que podemos encontrarnos, es que nuestro repositorio no se encuentre sincronizado con el repositorio remoto, por lo que deberemos hacer antes un git pull que lo que hace es sincronizar nuestro repositorio con el remoto.
1 2 3 |
<span style="color: #ff0000;">Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changeshint: (e.g., 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.</span> |
… enviando tags a nuestros repositorios remotos
Cuando hacemos push de nuestros cambios, nunca se enviarán las etiquetas (tags) que tengamos creadas en nuestro repositorio local. Por lo que si queremos enviarlas usaremos el argumento –tags
1 |
$ git push origin --tags |
Puede ser que solo necesitemos subir una etiqueta en concreto.
1 |
$ git push origin <tag> |
Para eliminar una etiqueta remota también usaremos git push pero con la opción -d (delete)
1 |
$ git push -d <tag> |
… eliminado ramas y etiquetas remotas
Para poder eliminar una rama remota usando el comando push necesitamos indicar la rama o etiqueta remota que deseamos eliminar.
1 2 3 |
$ git push origin :rama-tag <span style="color: #339966;">To https://github.com/<usuario>/<repositorio>.git - [deleted] test2</span> |
… forzando un envío con push
El comando git push acepta un argumento para forzar en envío, aunque los repositorios no estén sincronizados. Para ello usaremos el argumento –force
!!! No se recomienda usar –force ya que si haces trabajo en grupo, es muy probable que sobrescribas o elimines cualquier cambio (commit) realizado por tus compañeros.
1 |
$ git push --force |
Existe una mejor opción usando el argumento –force-with-lease que nos asegura que no sobrescribamos ningún otro fichero de nuestro compañeros o equipo de trabajo.
1 |
$ git push --force-with-lease |