2011-08-25 19 views
13

Sé cómo volver a establecer una base de datos en una rama o etiqueta específica usando eGit en Eclipse, pero no he encontrado una forma de volver a establecer una base en un sha1 específico usando eGit. Me gustaría hacer esto para aplastar los commits antes de pasar al upstream (es decir, haciendo git rebase -i HEAD~n donde n es una cantidad de commits ago donde quiero rebasear). ¿Es esto posible con eGit? De lo contrario, ¿hay otro plugin de Eclipse que debería usar que proporcione esta funcionalidad?¿Cómo puedo hacer el equivalente de git rebase -i HEAD ~ 2 en eGit?

Respuesta

8

EGit tiene rebase, pero todavía no tiene la base de datos interactiva que usted solicita.

+0

vea los siguientes enlaces para ver el progreso de esta función: https://bugs.eclipse.org/bugs/show_bug.cgi?id=340967 https://bugs.eclipse.org/bugs/show_bug.cgi?id= 356939 –

+4

Esta función estará disponible en Eclipse Luna y ya puede estar instalada. Ver http://m-sohn.blogspot.com/2013/11/interactive-rebase-with-egit-32.html – torkildr

0

En la vista del historial, seleccione la confirmación a la que desea volver a establecer la base, y cree una rama llamada rebase-point o lo que sea. Voila, ahora puedes volver a establecer la base para esa rama y eliminarla más adelante si lo deseas. Por lo general, prefiero usar una sucursal con nombre para este tipo de cosas, ya que minimiza la posibilidad de errores por mi parte. Alternativamente, considere que origin/master es a menudo el correcto punto de rebase si está aplastando compromisos para un empujón.

+0

Al igual que cuando trato de volver a establecer la base de una confirmación específica mediante la respuesta de @ KevinSawicki, también obtengo el "Rebase no hizo nada, HEAD ya estaba actualizado" mensaje cuando pruebo esto? Creo que me falta algo obvio aquí, pero no sé qué ... – Zach

+0

Hmm, parece que tendrás que hacerlo en la rama de características antes de fusionarlo en 'maestro', debido a un eclipse que" ayuda " usted demasiado. –

0

También puede modificar la base desde la vista del historial de Eclipse.

  • Seleccione el repositorio Git desde el punto de vista repositorios
  • derecho del ratón y seleccione Mostrar En Historia
  • Seleccione el commit desea reajustar la rama actualmente desprotegido en la parte superior de
  • botón secundario haga clic y seleccione Rebase en la parte superior de elemento
  • Nota: es posible que necesite seleccionar Mostrar todas las ramas y etiquetas primero de la historia ver barra de herramientas para mostrar la confirmación que está buscando en la tabla.
+0

Debería haber agregado esta información a la pregunta, pero así es como pensé inicialmente que funcionaría también. Sin embargo, al hacer esto en una confirmación previa en la misma rama, siempre aparece un diálogo que dice "Rebase no hizo nada, HEAD ya estaba actualizado". – Zach

8

He estado aplastamiento éxito compromete siguiendo los pasos de this post (cortar y pegar aquí):

Si quiero aplastar el último m compromete en la rama actual entonces

  • de selección en la historia el primer commit que no quiero aplastar
  • haga clic derecho y diga "Team-> Reset-> Soft"
  • haga clic derecho y diga "Commit". Esta confirmación contendrá todos los cambios de los últimos m commits juntos.
Cuestiones relacionadas