remove - git tag best practices
Git evita empujar después de modificar un compromiso (3)
Usualmente, solo corro
git add file
git commit
git push
pero si modifico el commit antes de presionarlo (con git commit --amend
), el siguiente push falla con
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ''git pull ...'') before pushing again.
hint: See the ''Note about fast-forwards'' in ''git push --help'' for details.
¿Cómo puedo dejar que git impulse los cambios sin fusionar ramas? Solo tengo una rama ( master
) y soy la única persona que usa este repositorio, entonces, ¿por qué dice esto?
git branch -a:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
EDITAR: Usando gitk HEAD @{u}
, veo que tengo 2 ramas, una con la confirmación original y otra con la confirmación modificada.
Esto solo debería ser el caso si está modificando una confirmación ya presionada. En general, nunca debes hacer eso ya que estás modificando el historial publicado. Sin embargo, en su caso, debería poder salirse con push -f
, que sobrescribirá la confirmación remota con su revisión modificada.
Sí, no deberías hacer eso (presionar un compromiso, luego cambiarlo e intentar presionarlo de nuevo).
En su lugar, puedes retrotraer Git a tu confirmación anterior sin cambiar los archivos, y luego crear una nueva confirmación:
git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be an amendmend"
git push origin master
esto creará una nueva confirmación con los cambios que estaba a punto de enmendar.
enmendó la confirmación extraída como en
git pull origin master
git commit -a --amend -m "..."
git push
puede resolver el problema invirtiendo el compromiso modificado:
git reset --mixed origin/master
y luego hacerlo nuevamente como un compromiso completo