Enviar una confirmación específica a un repositorio remoto
Este artículo describe el proceso de enviar una confirmación específica a un repositorio remoto en Git. Supongamos que tenemos un repositorio de Git con varias confirmaciones y solo necesitamos enviar una confirmación, ¿cómo haríamos esto?
Enviar una confirmación específica a un repositorio remoto
Para enviar una sola confirmación al repositorio remoto, usamos el comando Git push en el contexto que se muestra a continuación.
$ git push <remote> <commit id>:<remote branch>
Como siempre, emplearemos un ejemplo para ilustrar el concepto.
El siguiente ejemplo muestra un repositorio Demo
con cuatro confirmaciones, como se muestra en la imagen a continuación.
Supongamos que queremos enviar la confirmación inicial
al repositorio remoto. ¿Cómo lo haríamos?
Suponiendo que estamos ingresando al repositorio remoto por primera vez, seguiremos estos pasos.
Primero, agregaremos el repositorio remoto a nuestro repositorio local, como se muestra a continuación.
$ git remote add origin https://github.com/Wachira11ke/Demo.git
Para enviar el compromiso inicial
al control remoto, ejecutaremos:
$ git push origin 6b0f31a:refs/heads/master
Dado que estamos empujando al control remoto por primera vez, necesitamos usar el argumento refs/heads/master
para crear una rama master
en el repositorio remoto. Este comando solo enviará nuestra confirmación Inicial
al repositorio remoto.
¿Qué pasa si solo queremos enviar el primer compromiso, es decir, Actualizar licencias
?
Ejecutar git push origin c87321d:master
no tendrá el efecto deseado.
Esto se debe a que Git enviará todas las confirmaciones e incluirá la confirmación especificada. No queremos eso, ¿verdad?
Necesitamos reorganizar las confirmaciones para que la primera confirmación sea la última. Nuestro compromiso de Actualizar licencias
debe venir inmediatamente después del Compromiso inicial
.
Podemos hacer esto ejecutando el comando git rebase
en el modo interactivo, como se muestra a continuación.
$ git rebase -i HEAD~3
Este comando abrirá un editor de texto. Usaremos el comando pick
y reorganizaremos las confirmaciones, como se muestra a continuación.
Ahora podemos salir del editor de texto y completar la reorganización. Nuestro historial de confirmación ahora debería verse así:
Ahora podemos enviar la confirmación al repositorio remoto, como se ilustra a continuación.
$ git push origin 20136f7:master
Nuestro repositorio remoto solo debe contener dos confirmaciones.
- El compromiso
Compromiso inicial
- El commit de
Actualizar Licencias
.
Confirmemos nuestro caso.
Ahí tienes.
En conclusión, el git push <remote> <commit id>:<remote branch>
nos permite enviar una confirmación específica al repositorio remoto.
Sin embargo, el comando empujará todas las confirmaciones hasta la confirmación especificada, inclusive. Para remediar esto, deberá reorganizar sus confirmaciones con el comando git rebase
, como ilustramos.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn