[Conceptos básicos de Git] Comandos de git de uso común (2)

1. Fusionar compromiso en uno

Cuando usamos git, es posible que tengamos varios envíos para la misma tarea. Por ejemplo, es posible que varios colegas modifiquen diferentes partes de la misma función, pero varios envíos hacen que nuestra gestión de versiones parezca desordenada. En este momento, podemos fusionar varios compromisos en uno.

1.1 git commit --enmendar

Es un comando de Git para modificar la confirmación más reciente. Utilice este comando cuando desee cambiar el último mensaje de confirmación, agregar cambios de archivos faltantes o modificar archivos ya confirmados. Tenga en cuenta que esta operación cambia el hash de confirmación, así que tenga cuidado al usarla en ramas compartidas.

  1. Agregar cambios que faltan: si se da cuenta de que se perdió algunos cambios en una confirmación reciente, primero puede agregar los archivos faltantes al área de preparación y luego agregarlos git commit --amenda la confirmación más reciente con . Por ejemplo:
    git add forgotten-file.txt
    git commit --amend --no-edit
    
    Esto se forgotten-file.txtagregará a la confirmación más reciente y conservará el mensaje de confirmación original (debido a la opción utilizada --no-edit).
  2. Ajuste de archivos confirmados: si desea modificar archivos confirmados, primero puede realizar cambios en los archivos, luego agregar los archivos modificados al área de preparación y fusionarlos en la confirmación más reciente con git commit --amend:
    # 对文件进行更改
    git add modified-file.txt
    git commit --amend --no-edit
    
    Esto modified-file.txtagregará los cambios a la confirmación más reciente y mantendrá el mensaje de confirmación original, lo que equivale a fusionar esta confirmación con la confirmación anterior y conservar el mensaje de la última confirmación.

Tenga en cuenta que git commit --amendel comando crea un nuevo objeto de confirmación y reemplaza la confirmación original. Esto significa que el hash de confirmación cambia. Tenga cuidado al hacer esto en una rama compartida con otros, ya que puede generar inconsistencias en el historial de la rama.

1.2 git rebase-i

Este método utiliza la función de reorganización interactiva de Git (reorganización interactiva), lo que le permite modificar el historial de confirmaciones. Tome el siguiente historial de confirmación como ejemplo:

A---B---C---D---E  (main)

Suponga que desea fusionar las confirmaciones C, D y E en una sola confirmación. Puedes hacerlo así:

  1. Cambie a la rama que desea modificar (por ejemplo, principal):
    git checkout main
    
  2. Úselo git rebase -ipara seleccionar el rango de confirmaciones para fusionar. Para fusionar C, D y E, necesitamos reorganizar desde B:
    git rebase -i B^
    
  3. Esto abrirá un editor de texto que muestra una lista de confirmaciones similar a la siguiente:
    pick C
    pick D
    pick E
    
  4. Cambie las acciones de la segunda y tercera confirmación (D y E) de picka squash(o s para abreviar):
    pick C
    squash D
    squash E
    
  5. Guarde y cierre el editor. Esto abrirá un editor nuevamente, permitiéndole editar el nuevo mensaje de confirmación. Cree un nuevo mensaje de confirmación que fusione C, D y E, luego guarde y cierre el editor.
  6. En este punto, el historial de confirmaciones se convertirá en:
    A---B---F  (main)
    
    F es la nueva confirmación de fusión.

1.3 restablecer git

Este enfoque deshará la confirmación, pero mantendrá los cambios en el espacio de trabajo. A continuación, puede crear una nueva confirmación que incluya los cambios de las confirmaciones anteriores. Usando el mismo ejemplo como referencia:

  1. Cambie a la rama que desea modificar (por ejemplo, principal):
    git checkout main
    
  2. Utilice git resetel comando para retroceder hasta la confirmación B, con --softla opción de conservar los cambios en el espacio de trabajo:
    git reset --soft B
    
  3. Ahora, use git commitpara crear una nueva confirmación que contenga los cambios de C, D y E. Al confirmar, agregue un mensaje de confirmación descriptivo:
    git commit -m "合并 C, D 和 E 的更改"
    
  4. En este punto, su historial de confirmaciones se convertirá en:
    A---B---F  (main)
    
    F es la nueva confirmación de fusión.

1.4 Ejemplos

  1. Se agregaron 3 confirmaciones
    inserte la descripción de la imagen aquí
  2. git rebase -i <hash>
    inserte la descripción de la imagen aquí
    Cambie las dos últimas selecciones para aplastar usando
  3. Edite la información de la confirmación.
    inserte la descripción de la imagen aquí
    Aquí anotaré las siguientes dos informaciones y modificaré la primera para: feat: agregar una nueva declaración
    Después de guardar, la confirmación se completará automáticamente, y luego presionaré, y las tres confirmaciones se fusionarán en una sola
  4. visualización
    inserte la descripción de la imagen aquí

2. Modificar el contenido de la confirmación

2.1 git commit --enmendar

git commit --amendEl comando le permite modificar la última confirmación. Esto utilizará el área de preparación actual como la nueva confirmación. Si no hay cambios en el área de almacenamiento temporal , este comando se puede usar para modificar la información de confirmación.

Por ejemplo:
supongamos que se acaba de enviar una confirmación, pero se descubre que se olvidó agregar un archivo. Puedes seguir los siguientes pasos:

git add forgotten_file.txt
git commit --amend

A continuación, se abrirá un editor de texto, donde puede modificar la información de confirmación. Después de guardar y cerrar el editor, la nueva confirmación reemplazará a la anterior.
inserte la descripción de la imagen aquí

2.2 git rebase-i

git rebase -iLos comandos le permiten modificar varias confirmaciones pasadas en una interfaz interactiva. Puede cambiar el orden de las confirmaciones, fusionar, dividir y editar mensajes de confirmación.

Un ejemplo:
supongamos que desea modificar la tercera última confirmación, puede seguir los pasos a continuación:

git rebase -i HEAD~3

Esto mostrará una lista similar a:

pick f392171 Commit message 1
pick 58a9d84 Commit message 2
pick b6a0f7c Commit message 3

pickCambie la línea antes de la línea de confirmación que desea modificar edit, luego guarde y cierre el archivo. Por ejemplo, queremos modificar el segundo compromiso:

pick f392171 Commit message 1
edit 58a9d84 Commit message 2
pick b6a0f7c Commit message 3

Ahora, Git retrocederá a la segunda confirmación. Puede realizar cualquier modificación, como agregar, eliminar o modificar archivos. Una vez hecho esto, agregue los cambios al área de ensayo:

git add modified_file.txt

Luego, ejecute git commit --amendModificar mensaje de confirmación. Una vez hecho esto, continúa con el proceso de rebase:

git rebase --continue

Si encuentra un conflicto durante el proceso de reorganización, debe resolver el conflicto, agregar el archivo resuelto al área de almacenamiento temporal y luego continuar con el proceso de reorganización.

Si encuentra un conflicto durante el proceso de reorganización, debe resolver el conflicto, agregar el archivo resuelto al área de almacenamiento temporal y luego continuar con el proceso de reorganización.

2.3 git selección de cerezas

git cherry-pickUn comando puede aplicar una confirmación específica en una rama a otra rama. Esto es útil para modificar el contenido de una confirmación específica, especialmente si hay varias ramas involucradas.

Ejemplo:
Suponga que hay dos ramas: mastery feature, desea modificar featureuna confirmación en la rama. Puedes seguir los siguientes pasos:

Primero, verifique featureel historial de confirmaciones en la rama y busque la confirmación que desea modificar (p. ej., a123456). Luego mastercrea una nueva rama en la rama:

git checkout master
git checkout -b temp

A continuación, git cherry-pickaplique el compromiso que se modificará a la nueva rama usando el comando:

git cherry-pick a123456

Ahora, el contenido de la confirmación se puede modificar. Cuando haya terminado de hacer modificaciones, agregue los cambios al área de ensayo y confirme git commit --amendel mensaje con la modificación. Finalmente, vuelva a fusionar la confirmación modificada en featurela rama:

git checkout feature
git merge temp

Finalmente, elimine la rama temporal:

git branch -d temp

2.4 git reflog y reinicio de git

En algunos casos, es posible que deba restaurar las confirmaciones que se perdieron debido a un mal uso. git reflogpuede ayudarlo a encontrar estas confirmaciones faltantes. git resetEl comando se puede usar para restablecer el puntero de rama a una confirmación específica.

Ejemplo:
suponga que accidentalmente git push --forcesobrescribe la rama remota, lo que resulta en la pérdida de algunas confirmaciones. Primero, git reflogencuentre las confirmaciones faltantes usando:

git reflog

Encuentre el hash de la confirmación faltante (por ejemplo, b123456), luego git resetrestablezca el puntero de rama a esa confirmación usando:

git reset b123456

De esta manera, puede recuperar confirmaciones perdidas y realizar cambios según sea necesario.

Tenga en cuenta que estas operaciones pueden hacer que cambie el historial de sucursales, así que tenga cuidado al realizar estas operaciones en sucursales compartidas. Además, para evitar problemas innecesarios, haga una copia de seguridad de su repositorio antes de realizar estas operaciones.

3. Ver el contenido de la confirmación

3.1 registro de git

versión sin argumentos
inserte la descripción de la imagen aquí

3.2 registro de git --una línea

Cada registro solo se muestra en una línea
inserte la descripción de la imagen aquí

3.3 registro de git - [longitud]

Mostrar solo los registros de longitud anteriores
inserte la descripción de la imagen aquí

3.4 registro de git --skip=[saltar]

Omita el registro de omisión anterior, que se puede usar junto con el anterior - [longitud]
inserte la descripción de la imagen aquí

3.5 registro de git -p

Mostrar algunas estadísticas y cambios de archivos e información de línea
inserte la descripción de la imagen aquí

3.6 registro de git --stat

Mostrar estadísticas de contenido de archivo, fecha, mensaje y autor de la confirmación
inserte la descripción de la imagen aquí

3.7 bitácora de git

Mostrar la confirmación de cada autor y cuántas confirmaciones
inserte la descripción de la imagen aquí

3.8 Filtración

  1. por fecha
    git log --after="2023-4-1" # 2023年4月1号之后的所有日志
    git log –-before="2013-4-1" # 2023年4月1号之前的所有日志
    
  2. por autor
    git log --author="Ricky"
    
  3. presione enviar información
    git log --grep=“issue” # 查看提交本中包含issue的日志
    
  4. por archivo
    git log -- ./src/http/modules/ngx_http_xslt_filter_module.c
    
  5. por contenido
    git log -S “ngx_free” # 查看所有文件中包含了ngx_free字符串的修改
    
  6. por rango
    git log <since>..<until>
    

Por ejemplo, git log master...feature Esto puede mostrar todas las confirmaciones en la rama de funciones desde la bifurcación de la rama maestra

3.9 mostrar git [commit_id]

Mostrar el contenido de envío de commit_id, incluida la información de modificación de todos los archivos
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_52665939/article/details/130177699
Recomendado
Clasificación