Pero recibo un error "! [Rechazado]" y algo sobre "avance no rápido"
Eso es porque Git no puede fusionar los cambios de las ramas en su maestro actual. Digamos que ha desprotegido la rama master
y desea fusionarse en la rama remota other-branch
. Cuando haces esto:
$ git pull origin other-branch
Git básicamente está haciendo esto:
$ git fetch origin other-branch && git merge other-branch
Es decir, a pull
es solo un fetch
seguido de a merge
. Sin embargo, cuando se pull
activa, Git solo se fusionará other-branch
si puede realizar una combinación de avance rápido . Una fusión de avance rápido es una fusión en la que la cabeza de la rama en la que está intentando fusionarse es un descendiente directo de la cabeza de la rama que desea fusionar. Por ejemplo, si tiene este árbol de historial, la fusión other-branch
daría como resultado una fusión de avance rápido:
O-O-O-O-O-O
^ ^
master other-branch
Sin embargo, esto no sería una combinación de avance rápido:
v master
O-O-O
\
\-O-O-O-O
^ other-branch
Para resolver su problema, primero busque la rama remota:
$ git fetch origin other-branch
Luego combínelo en su rama actual (supongo que es así master
), y arregle cualquier conflicto de fusión:
$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit # And commit the merge!