1. Eliminar ramas innecesarias
1. Ahora, en el proyecto my-pro, cree varias ramas nuevas para probar.
git checkout master # apunta HEAD a la rama maestra
git branch testdel #Crear una nueva rama bajo el punto maestro
git checkout testdel #point HEAD to testdel branch
#Modifique style.css aquí, por ejemplo, agregue un color de fondo background:#d8d8d8
git commit css/style.css -m'solo una confirmación de prueba' #Ejecutar una operación de confirmación en testdel
prueba de rama git de nuevo
maestro de pago de git
rama de git otra prueba
gitk --all #Usar gitk para visualizar el estado actual de la rama
Después de varias operaciones de creación y confirmación de ramas, nuestra rama se ha convertido en la estructura que se muestra en la siguiente figura:
2. Use el comando git branch -d [nombre de la rama] para eliminar una rama específica.
Yooye-2:my-pro yooye$ git branch -av #Ver el estado actual de la rama
anothertest dc7ecf7 deja que index.html vincule el archivo de estilo
change-border-color 413552e cambiar el color del borde de la caja
* maestro dc7ecf7 dejar que index.html vincule el archivo de estilo
testagain e1e471a solo una prueba
testdel e1e471a solo una prueba
Yooye-2:my-pro yooye$ git checkout master #Enter the master branch
Cambiado a la rama 'maestro'
Yooye-2:my-pro yooye$ git branch -d testagain #Use -d para eliminar una rama
error: la rama 'testagain' no está completamente fusionada.
Si está seguro de que desea eliminarlo, ejecute 'git branch -D testagain'. #Indíquenos que usemos -D para eliminar
Yooye-2:my-pro yooye$ git branch -D testagain #Use -D para intentar eliminar una rama nuevamente
Prueba de sucursal eliminada nuevamente (era e1e471a). #Eliminar con éxito
Yooye-2:my-pro yooye$ gitk --all #Ver el estado de la rama visual después de la eliminación
El estado después de eliminar el punto testagain es el siguiente:
3. Cuando usamos git checkout para cambiar entre las ramas testdel y master, los archivos de código como style.css en el proyecto cambiarán en consecuencia. Si se elimina la rama testdel, se eliminarán todos los registros de operaciones de confirmación enviados en esta rama. Por lo tanto, debemos confirmar la versión antes de eliminar la rama.
2. Modificar la descripción de la última confirmación
Usa el comando git commit --amend para modificar el texto descriptivo de la confirmación más reciente. El proceso de operación es el siguiente:
Yooye-2:my-pro yooye$ git checkout testdel #【1】Ingrese a la rama testdel
Cambiado a la rama 'testdel'
Yooye-2:my-pro yooye$ git log -1 #【2】Verifique el último registro de confirmación, tenga en cuenta que este es git log -[Número 1]
confirmar e1e471a5945ab83673bc56055e3455e9fbec8e61 (HEAD -> testdel)
Autor: <[email protected]>
Fecha: viernes 1 de marzo 10:26:49 2019 +0800
solo una prueba # [2-1] Este es el texto de descripción antes de la modificación
Yooye-2:my-pro yooye$ git commit --amend # [3] Ejecute el comando de modificación e ingrese el estado de modificación. Consulte el paso [4] a continuación para ver la operación detallada
Yooye-2:my-pro yooye$ git log -1 #【5】Verifique si la modificación es exitosa
cometer 1062fa43b85ad7111738d4eaee56436279768757 (HEAD -> testdel)
Autor: <[email protected]>
Fecha: viernes 1 de marzo 10:26:49 2019 +0800
solo una prueba y tuve que cambiar estas palabras 【5-1】texto de descripción modificado
Yooye-2:mi-pro yooye$
[4] Ejecute el comando de modificación git commit --amend, el método de modificación es el siguiente:
3. Modifique la información de descripción de confirmación anterior
Use el comando git rebase -i [identificación única de la confirmación principal modificada] para ingresar a la operación de reorganización.
[Nota]: La confirmación de nivel principal se usa arriba para ingresar la operación de reorganización, y la operación es ingresar la confirmación en el nivel principal.
1. Debido a que se puede admitir una variedad de operaciones en el estado de rebase, aquí debemos cambiar el modo de operación de selección predeterminado frente a la confirmación que debe modificarse para reformular (es decir, el significado de modificación). Luego guarde y salga de la misma manera que en el segundo paso, e ingrese a la siguiente interfaz de operación.
2. En esta interfaz de operación, el contenido de la descripción del compromiso original se puede modificar, como se muestra en la primera línea de la figura a continuación. Luego continúe guardando y salga.
3. Use git log --graph para ver los resultados modificados, como se muestra en la siguiente figura:
4. Combinar varias acciones de confirmación consecutivas
De acuerdo con los resultados de git log --graph en el paso anterior, se puede ver que en realidad hay tres confirmaciones arriba para mostrar el index.html de manera normal, por lo que podemos fusionar las otras tres confirmaciones excepto la operación Léame. .
1. Use el comando git rebase -i [la identificación única de la confirmación que primero creó el archivo Léame] para ingresar a la interfaz de operación. Combine estos tres compromisos en uno de ellos, luego guarde y salga al siguiente paso.
elegir 789f15c agregar un archivo index.html #[1] significa fusionar otras confirmaciones en esta confirmación
squash e7bf7b0 agregar archivo de estilo aaaaaaa # 【2】 fusionar
squash 4216faf let index.html enlazar el archivo de estilo #【3】merge
# Rebase 1bb42bc..4216faf en 1bb42bc (3 comandos)
#
# Comandos:
# p, elige <confirmar> = usar confirmar
# r, reformular <commit> = usar confirmación, pero editar el mensaje de confirmación
# e, edit <commit> = usa commit, pero deja de modificar
# s, squash <commit> = usar confirmación, pero combinar con la confirmación anterior
# f, fixup <commit> = como "squash", pero descarta el mensaje de registro de esta confirmación
# x, exec <comando> = ejecutar comando (el resto de la línea) usando shell
# d, suelta <commit> = elimina la confirmación
# l, label <label> = etiqueta HEAD actual con un nombre
# t, restablecer <etiqueta> = restablecer HEAD a una etiqueta
# m, fusionar [-C <confirmar> | -c <compromiso>] <etiqueta> [# <una línea>]
# . crear una confirmación de fusión utilizando la confirmación de fusión original
# . mensaje (o el oneline, si no se realizó la confirmación de combinación original)
# . especificado). Use -c <commit> para reformular el mensaje de confirmación.
#
# Estas líneas se pueden reordenar; se ejecutan de arriba hacia abajo.
# Si elimina una línea aquí, ESE COMPROMISO SE PERDERÁ.
# Sin embargo, si elimina todo, la reorganización se anulará.
#
#
# Tenga en cuenta que las confirmaciones vacías están comentadas
~
:wq!
2. Rellene el texto de descripción de esta fusión y conserve el texto de descripción de la confirmación original para su visualización posterior.
# Este es el primer mensaje de confirmación:
Estoy tratando de hacer una combinación, ¡Sí! #【1】El texto de descripción de esta operación de fusión
agregue un archivo index.html # [2-1] Texto de descripción de compromiso original reservado
# Este es el mensaje de confirmación #2:
agregue el archivo de estilo aaaaaaa # [2-2] Texto de descripción de compromiso original reservado
# Este es el mensaje de confirmación #3:
permita que index.html vincule el archivo de estilo # [2-3] Texto de descripción de compromiso original reservado
# Ingrese el mensaje de confirmación para sus cambios. Líneas que comienzan
# con '#' será ignorado y un mensaje vacío abortará la confirmación.
#
# Fecha: miércoles 27 de febrero 11:42:12 2019 +0800
#
# rebase interactivo en progreso; en 1bb42bc
# Últimos comandos realizados (3 comandos realizados):
# squash e7bf7b0 agregar archivo de estilo aaaaaaa
# squash 4216faf deja que index.html vincule el archivo de estilo
# No quedan comandos.
# Actualmente está reorganizando la rama 'anothertest' en '1bb42bc'.
#
# Cambios a realizar:
# nuevo archivo: css/style.css
# nuevo archivo: index.html
#
# archivos sin seguimiento:
#js/
#
:wq!
3. Use git log --graph para ver el estado de la versión fusionada.
5. Combinar confirmaciones discontinuas
1. Según el paso anterior, para demostrarlo, eliminamos todas las demás ramas de prueba y solo mantenemos la rama maestra original y tres confirmaciones relacionadas con index.html, style.css y readme.md.
Luego modificamos el contenido del archivo readme.md en my-pro y realizamos una operación de confirmación. Luego use el comando git log --graph para ver la lista de estado de confirmación actual.
2. Debido a que la primera y la última confirmación tienen que ver con los envíos de Léame, necesitamos fusionarlos. Antes de ejecutar git rebase -i [la confirmación del antepasado más bajo], recuerde copiar la identificación de la confirmación del antepasado (p. ej.: 1bb42bc) para uso futuro.
Después de ingresar a la ventana de operación, realice las operaciones como se muestra en el siguiente código para guardar y salir.
pick 1bb42bc8 #[1] Esta oración fue agregada recientemente por nosotros, que es para fusionar la operación de confirmación de otra operación Léame
squash 702dcbf Soy el verdadero archivo readme.md # [2] Esta línea estaba originalmente en la parte inferior, la movimos a esta y cambiamos la selección a squash
elige 2b2e247 Estoy tratando de hacer una combinación, ¡Sí!
# Rebase 1bb42bc..702dcbf en 1bb42bc (2 comandos)
#
# Comandos: había muchas indicaciones de comando aquí, que se eliminaron
# Estas líneas se pueden reordenar; se ejecutan de arriba hacia abajo.
# Si elimina una línea aquí, ESE COMPROMISO SE PERDERÁ.
# Sin embargo, si elimina todo, la reorganización se anulará.
#
:wq!
3. Si la rama de recordatorio no es continua después de guardar y salir, podemos usar git rebase --continuar para continuar con el siguiente paso.
6. Compara la diferencia entre el área de almacenamiento temporal y los archivos contenidos en HEAD
1. Modifique el contenido de index.html en el almacén my-pro.
2. Realice una operación de adición de git.
3. Use git diff -cached para ver la diferencia entre el área de almacenamiento temporal y los archivos contenidos en HEAD.
Yooye-2:my-pro yooye$ git diff --cached #【1】Ejecutar comando de comparación
diferencia --git a/index.html b/index.html
índice 084901f..ec530c2 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<enlace rel="hoja de estilo" href="css/estilo.css">
- <title>Documento</title> #【2-1】El contenido antiguo señalado por HEAD antes de ningún cambio
+ <title>Learn Git</title> #【2-2】El contenido agregado al área de almacenamiento temporal a través de git add después de la modificación
</cabeza>
<cuerpo>
<div clase="caja"></div>
7. Compare la diferencia entre los archivos contenidos en el área de trabajo y el área de almacenamiento temporal
1. Según el paso anterior, ajustemos el archivo style.css (como agregar un fondo) y luego no ejecutemos la operación git add. En este momento, los cambios en el archivo style.css que acabamos de editar pertenecen a el espacio de trabajo
2. Ejecute el comando git diff para ver las diferencias entre el espacio de trabajo y los archivos del área de ensayo enviados anteriormente.
Yooye-2:mi-pro yooye$ git diff
diferencia --git a/css/style.css b/css/style.css
índice 20ce14c..488853c 100644
--- a/css/estilo.css
+++ b/css/estilo.css
@@ -2,4 +2,5 @@
ancho: 100px;
altura: 100px;
borde: 1px rojo sólido;
+ fondo: rosa;
}
\ Sin nueva línea al final del archivo
Yooye-2:mi-pro yooye$
3. Si se han modificado varios archivos antes de enviarlos al área de almacenamiento temporal, pero solo queremos ver los cambios de un determinado archivo, como readme.md, podemos usar el siguiente comando:
git diff -- readme.md
8. Restaure el contenido en el área de almacenamiento temporal para que sea igual que HEAD
En el escenario de uso, modificamos index.html en el sexto paso y lo enviamos al área de almacenamiento temporal a través de git add.Si nos arrepentimos en este momento, podemos usar el comando git reset HEAD para restaurarlo al mismo que CABEZA. El proceso de prueba es el siguiente:
Yooye-2:my-pro yooye$ git status # [1] Verifique el estado de confirmación antes de restaurar
En maestro de rama
Cambios a realizar:
(use "git reset HEAD <archivo>..." para quitar el escenario)
modificado: index.html #【2-1】Ya en el área de almacenamiento temporal
Cambios no organizados para la confirmación:
(use "git add <file>..." para actualizar lo que se confirmará)
(use "git checkout -- <archivo>..." para descartar cambios en el directorio de trabajo)
modificado: css/style.css #【2-2】No en el área de almacenamiento temporal
modificado: readme.md
Yooye-2:my-pro yooye$ git reset HEAD #【3】Restaura el contenido del área de almacenamiento temporal
Cambios no preparados después del reinicio:
M css/estilo.css
índice M.html
M readme.md
Yooye-2: mi-pro yooye$ git estado
En maestro de rama
Cambios no organizados para la confirmación:
(use "git add <file>..." para actualizar lo que se confirmará)
(use "git checkout -- <archivo>..." para descartar cambios en el directorio de trabajo)
modificado: css/style.css #【4】No en el área de almacenamiento temporal
modificado: index.html
modificado: readme.md
no se agregaron cambios para confirmar (use "git add" y/o "git commit -a")