Tengo una rama 'primer proyecto' con 2 confirmaciones. Quiero deshacerme de estas confirmaciones y hacer que aparezcan como una única confirmación.
El comando git merge --squash
suena prometedor, pero cuando ejecuto git merge --squash
mi terminal solo aparecen opciones para el comando. ¿Cuál es el comando correcto?
Commit 1:
Added 'homepage.html'
Added 'contacts.html'
Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
Respuestas:
Quiere
git rebase -i
realizar una rebase interactiva .Si actualmente está en su "compromiso 1", y el compromiso que desea fusionar, "compromiso 2", es el compromiso anterior, puede ejecutarlo
git rebase -i HEAD~2
, lo que generará un editor que enumera todas las confirmaciones que atravesará la rebase. Debería ver dos líneas que comienzan con "elegir". Para continuar con el aplastamiento, cambie la primera palabra de la segunda línea de "recoger" a "aplastar". Luego guarde su archivo y salga. Git aplastará tu primera confirmación en tu penúltima confirmación.Tenga en cuenta que este proceso reescribe el historial de su sucursal. Si está empujando su código en alguna parte, tendrá que hacerlo
git push -f
y cualquiera que comparta su código tendrá que pasar por algunos obstáculos para realizar sus cambios.Tenga en cuenta que si las dos confirmaciones en cuestión no son las dos últimas confirmaciones en la rama, el proceso será ligeramente diferente.
fuente
Then write your file, and quit
? Estoy usando Android Studio Terminal, la propia consola git O incluso la consola git abierta por el software SourceTree. Pero, ¿cómo ahorrar y dejar de fumar?Versión simple y perezosa para olvidadizos como yo:
git rebase -i HEAD~3
o tantas confirmaciones en lugar de 3.Convierte esto
dentro de esto
y hacer algo de acción en el que golpea
esc
a continuaciónenter
para guardar los cambios. [1]Cuando aparezca la siguiente pantalla, deshazte de esas # líneas basura [2] y crea un nuevo mensaje de confirmación o algo así, y haz la misma
escape
enter
acción. [1]Vaya, tienes menos confirmaciones. O simplemente rompiste todo.
[1] - o lo que sea que funcione con tu configuración de git. Esta es solo una secuencia que es eficiente dada mi configuración.
[2] - Verás algunas cosas como
# this is your n'th commit
algunas veces, con tus confirmaciones originales justo debajo de este mensaje. Desea eliminar estas líneas y crear un mensaje de confirmación para reflejar las intenciones de las n confirmaciones que está combinando en 1.fuente
s
aquí se usa significa calabaza. Para usar el compromiso, pero fusionarlo con el compromiso anterior2
confirmaciones y desea combinar la misma2
confirmación, deberá ejecutargit reset --soft HEAD~
ygit commit --amend
.git rebase -i HEAD~<quantity of your commits>
(es decirgit rebase -i HEAD~5
)txt
archivo abierto , cambie lapick
palabra clave asquash
para todas las confirmaciones, excepto la primera confirmación (que está en la parte superior). Para el primero, cámbielo areword
(lo que significa que proporcionará un nuevo comentario para este compromiso en el siguiente paso) y haga clic en GUARDAR. Si está en vim, presione,esc
luego guarde ingresandowq!
y presione enter.Hecho
fuente