in

¿Cómo fuerzo correctamente un empuje de Git?

apple touch icon@2

Y si push --force no funciona, puedes hacerlo push --delete. Mira 2Dakota del Norte línea en esta instancia:

git reset --hard HEAD~3  # reset current branch to 3 commits ago
git push origin master --delete  # do a very very bad bad thing
git push origin master  # regular push

Pero cuidado…

En otras palabras:

  • Nunca force empujar en un repositorio público.
  • No hagas esto ni nada que pueda romperle a alguien. pull.
  • Nunca reset o rewrite historia en un repositorio alguien ya podría haber tirado.

Por supuesto, hay excepciones excepcionalmente raras incluso a esta regla, pero en la mayoría de los casos no es necesario hacerlo y generará problemas a todos los demás.

Y siempre tenga cuidado con lo que envía a un repositorio público. Revirtiendo:

git revert -n HEAD~3..HEAD  # prepare a new commit reverting last 3 commits
git commit -m "sorry - revert last 3 commits because I was not careful"
git push origin master  # regular push

En efecto, ambos CABEZAS de origen (del revertir y del reinicio malvado) contendrá los mismos archivos.


editar para agregar información actualizada y más argumentos alrededor push --force

Considere presionar la fuerza con arrendamiento en lugar de empujar, pero aún prefiera revertir

Otro problema push --force puede traer es cuando alguien empuja algo antes de que usted lo haga, pero después de que ya lo haya buscado. Si empujas fuerza tu rebasado versión ahora lo harás reemplazar el trabajo de otros.

git push --force-with-lease introducido en el git 1.8.5 (gracias al comentario de @VonC sobre la pregunta) intenta abordar este problema específico. Básicamente, traerá un error y no presionará si el control remoto fue modificado desde su última búsqueda.

Esto es bueno si está realmente seguro de que push --force es necesario, pero aún desea evitar más problemas. Iría tan lejos como para decir que debería ser el predeterminado push --force comportamiento. Pero todavía está lejos de ser una excusa para forzar una push. Gente que traído antes de su rebase todavía tendrá muchos problemas, que podrían evitarse fácilmente si tuviera revirtió en lugar de.

Y ya que estamos hablando de git --push instancias…

¿Por qué alguien querría forzar el empuje?

@linquize trajo un buen ejemplo de fuerza de empuje en los comentarios: informacion delicada. Ha filtrado erróneamente datos que no deberían enviarse. Si eres lo suficientemente rápido, puedes «reparar»* forzando un empujón en la parte superior.

* los los datos todavía estarán en el control remoto a menos que también haga una recolección de basura o la limpie de alguna manera. También existe el potencial obvio de que se propague por otras personas que traído ya lo tienes, pero entiendes la idea.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

conceptual view

Sistema operativo: descripción general

gfg 200x200 min

operador sizeof en C – GeeksforGeeks