Estoy en el maestro y lo hice rebase -i <my_branch>
Tengo esto:
noop
# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Me gustaría elegir algunos compromisos, no todos, ya que algunos de ellos no son bienvenidos. Además, ¿cómo funciona cuando desea mantener algunos archivos o cambios siempre 'locales' en alguna rama? ¿Hay algún ayudante como .gitignore
?
HEAD~*
sintaxis funcionó para mí, pero el primero no.rebase -i
sin un rango de confirmación no mostrará ninguna confirmación. para reajustar las últimas, digamos, 7 confirmaciones, use lo siguiente:Sin embargo, tenga cuidado de que esto reescribirá la historia. no lo hagas, si las confirmaciones ya están presionadas
para su segunda pregunta: tenga una rama con sus cambios (básicamente una rama de configuración) y combine regularmente las otras ramas en ella. de esta forma los cambios no se trasladarán a otras ramas
fuente
Cuando está usando
git rebase -i
, generalmente tiene que especificar, desde qué confirmación desea realizar el rebase. Entonces, si, por ejemplo, desea eliminar algunas de las confirmaciones entre las últimas 10 en la rama actual, debe hacer:fuente
Como han mencionado otros, debe especificar un rango de confirmación.
(Suponiendo que está en la misma rama que la confirmación que se va a editar) -
Para especificar las confirmaciones, puede usar las abreviaturas HEAD ~ 5 o usar la suma de comprobación sha (que puede obtener
git log
)De hecho, cualquier confirmación servirá si es anterior / antecesora a las confirmaciones que desea eliminar / editar / reformular en el árbol. Esto enumerará todas las confirmaciones desde el
<latest-commit-to-be-retained>
en el editor (definido en su configuración de git). De la lista, para eliminar una confirmación, simplemente elimine esa línea en particular, guarde y salga (vi habbits :)) el archivo + editor, y hagagit rebase --continue
Para la segunda respuesta, estoy de acuerdo con knittl
fuente