Git Pull Origin Branch sobrescribe Master Branch
Este artículo ilustra cómo podemos revertir los cambios realizados en la rama maestra
después de ejecutar el comando git pull origin <branch>
. Digamos que tiene una rama maestra
y una rama característica
en sus repositorios locales y remotos.
Saca los cambios de la rama remota de características
a su repositorio local, pero nota que está desprotegido en su rama maestra
local.
¿Cómo hace para revertir los cambios realizados en la rama maestra
y extraer los cambios en la rama característica
?
Git Pull Origin <Branch>
sobrescribe la rama principal
Para entender el concepto, vamos a replicar el escenario ilustrado arriba.
Suponiendo que tenemos cambios en nuestra rama remota de características
que no están presentes en el repositorio local, ejecutaremos el comando git pull
, como se ilustra a continuación, para incorporar los cambios a nuestro repositorio local.
$ git pull origin feature
Tenga en cuenta que todavía estamos desprotegidos en nuestra rama maestra
, pero idealmente, queremos llevar los cambios de la rama remota de características
a la rama local de características
. Tenga en cuenta que la acción anterior reducirá todas las confirmaciones de la rama remota a la rama maestra
local y creará una confirmación de fusión.
¿Cómo hacemos para revertir nuestra rama maestra
a su estado anterior e incorporar los cambios a la rama característica
local?
Comenzaremos revirtiendo la rama maestra
. Emplearemos el comando git reset --hard
en este momento.
Podemos usar el comando para restablecer nuestra rama maestra
de dos maneras.
Podemos usar el comando git reset --hard
con la confirmación principal. La confirmación principal es simplemente la confirmación que estaba presente antes de la confirmación de combinación que resultó de la extracción.
Ejecute el comando git log --oneline
y anote el SHA-1
de la confirmación principal. Tenga en cuenta qué confirmaciones se introdujeron desde la rama remota.
Para restablecer la rama maestra
, ejecute el siguiente comando.
$ git reset --hard 11bd00c
Esto restablecerá nuestra rama maestra
a su estado anterior antes de la extracción. Alternativamente, puede utilizar la referencia HEAD
.
En este caso ejecutaremos lo siguiente:
$ git reset --hard HEAD~1
El comando anterior es la opción más segura, ya que usar la confirmación puede resultar confuso, especialmente si la extracción introduce varias confirmaciones. Ahora podemos proceder a nuestra sucursal local de características
.
$ git checkout feature
Sabemos que el comando git pull
combina los comandos git fetch
y git merge FETCH_HEAD
. Esto significa que ya tenemos los cambios de la rama de características
remota, pero aún no se fusionaron en nuestra rama de características
.
No necesitamos ejecutar el comando git pull origin feature
nuevamente. En su lugar, podemos fusionar los cambios, como se ilustra a continuación.
$ git merge FETCH_HEAD
Esto actualizará nuestra rama local de características
para que coincida con la rama remota de características
.
En conclusión, si el comando git pull origin <branch>
actualiza tu rama master
por error, puedes revertir los cambios y moverlos a la rama correcta, como se mencionó anteriormente. El método anterior se aplica a todas las sucursales.
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