repository - remoto - eliminar un commit especifico
Eliminar el Ășltimo commit en bitbucket (6)
En primer lugar, si está trabajando con otras personas en el mismo repositorio de código, no debe eliminar una confirmación ya que cuando fuerce la actualización en el repositorio dejará los repositorios locales de sus compañeros de trabajo en un estado ilegal (por ejemplo, si commits realizados después del que eliminó, esos commits serán inválidos ya que se basaron en un commit ahora inexistente).
Dicho eso, lo que puedes hacer es revertir la confirmación. Este procedimiento se realiza de manera diferente (diferentes comandos) según el CVS que esté utilizando:
En git :
git revert <commit>
En mercurial :
hg backout <REV>
EDITAR: la operación de revertir crea una nueva confirmación que hace lo contrario que la confirmación revertida (por ejemplo, si la confirmación original agregó una línea, la confirmación revoca esa línea), eliminando efectivamente los cambios de la confirmación no deseada sin reescribir el historial del repositorio.
Cometí un error y no sé cómo eliminar mi última inserción en el repositorio. Extraigo las últimas actualizaciones de la aplicación pero tiene conflictos y la envío al repositorio.
¿Cómo borrar mi último compromiso? O como arreglarlo.
He tenido problemas con Git Revertir en el pasado (principalmente porque no estoy muy seguro de cómo funciona). He tenido problemas para revertir debido a problemas de combinación.
Mi solución simple es esto.
Paso 1.
git clone <your repos URL> .
su proyecto en otra carpeta, entonces:
Paso 2.
git reset --hard <the commit you wanna go to>
luego paso 3.
en su último (y principal) proyecto dir (el que tiene la última confirmación problemática) pegue los archivos del paso 2
Etapa 4.
git commit -m "Fixing the previous messy commit"
Paso 5
Disfrutar
Por ahora, bitbucket en la nube (no estoy seguro de qué versión) permite revertir una confirmación del sistema de archivos de la siguiente manera (no veo cómo revertir desde la interfaz de Bitbucket en el navegador Chrome).
respalde todo su directorio para proteger los cambios que inadvertidamente cometió
-seleccionar el directorio desprotegido
-derecha botón del mouse: tortuga git menú
-repo-browser (la opción de menú ''revert'' solo deshace los cambios no confirmados)
-prisa el botón HEAD
-seleccione la línea superior (la última confirmación)
-derecha botón del mouse: revertir cambio por este compromiso
-después de deshacer los cambios en el sistema de archivos, presione confirmar
-esta actualización GIT con un mensaje ''Revertir (su mensaje anterior). Esto revierte el compromiso de tal y tal
-select ''commit and push''.
Una vez que se hayan confirmado los cambios, no podrá eliminarse. porque la naturaleza básica de commit no es eliminar.
Cosa que puedes hacer (método fácil y seguro),
Rebase interactivo:
1) git rebase -i HEAD~2
# mostrará sus 2 confirmaciones recientes
2) Su confirmación mostrará una lista como, Reciente aparecerá en la parte inferior de la página LILO (último en Último en salir)
Eliminar la última fila de confirmación por completo
3) ESC:wq
por ctrl+X
o ESC:wq
ahora su sucursal se actualizará sin su último compromiso.
puedes restablecer a HEAD^
luego forzar push.
git reset HEAD^
git push -u origin master --force
Borrará su última confirmación y se reflejará en bitbucket a medida que se borre la confirmación, pero seguirá estando en su servidor.
Si no está trabajando con otros (o está feliz de causarles una molestia significativa) , entonces es posible eliminar commits de las ramas bitbucket.
Si intentas cambiar una rama no maestra:
git reset HEAD^ # remove the last commit from the branch history
git push origin :branch_name # delete the branch from bitbucket
git push origin branch_name # push the branch back up again, without the last commit
si estás tratando de cambiar la rama maestra
En git en general, la rama principal no es especial, es solo una convención. Sin embargo, bitbucket y github y sitios similares generalmente requieren que haya una rama principal (presumiblemente porque es más fácil que escribir más código manejar el evento que un repositorio no tiene ramas, no estoy seguro). Por lo tanto, debe crear una nueva rama y convertirla en la rama principal:
# on master:
git checkout -b master_temp
git reset HEAD^ # undo the bad commit on master_temp
git push origin master_temp # push the new master to Bitbucket
En Bitbucket, vaya a la configuración del repositorio, y cambie la "rama principal" a master_temp
(en Github, cambie la "rama predeterminada").
git push origin :master # delete the original master branch from Bitbucket
git checkout master
git reset master_temp # reset master to master_temp (removing the bad commit)
git push origin master # re-upload master to bitbucket
Ahora ve a Bitbucket, y deberías ver el historial que quieres. Ahora puede ir a la página de configuración y cambiar la rama Principal de nuevo a master
.
Este proceso también funcionará con cualquier otro cambio de historial (por ejemplo, git filter-branch
). Solo tienes que asegurarte de restablecer los commit apropiados, antes de que el nuevo historial se separe del anterior.
editar : aparentemente no necesitas ir a todas estas molestias en github, ya que puedes forzar una rama de reinicio .
Tratando con colaboradores molestos
La próxima vez que alguien intente sacar de su repositorio, (si ya han retirado la confirmación incorrecta), la extracción fallará. Tendrán que restablecer manualmente una confirmación antes del historial modificado, y luego volver a tirar.
git reset HEAD^
git pull
Si han retirado el compromiso incorrecto, y se han comprometido en él , tendrán que restablecerlo y luego git cherry-pick
los buenos compromisos que desean crear, recreando de manera efectiva toda la sucursal sin el compromiso incorrecto.
Si nunca sacaron el compromiso incorrecto, entonces este proceso completo no los afectará, y pueden hacerlo de forma normal.