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

1. Reversión de versión

1.1 El caso de no compromiso

Si aún no se ha comprometido, puede retroceder con el comando git checkouto .git restore

Por ejemplo, si desea deshacer los cambios en file1.txt, puede usar el siguiente comando:

git checkout -- file1.txt

o usa git restoreel comando:

git restore file1.txt

Si desea deshacer los cambios en todos los archivos, puede utilizar:

git checkout -- .

o:

git restore .

1.2 La situación que se ha cometido pero no empujado

Si se ha comprometido pero aún no ha presionado, puede usar el comando git reseto git revertpara retroceder.

Use git resetel comando para retroceder a la confirmación anterior:

git reset HEAD~1

Esto moverá el puntero HEAD a la confirmación anterior y devolverá los cambios al directorio de trabajo. Puede utilizar las opciones o --softpara especificar el método alternativo. De forma predeterminada, se utiliza el patrón .--mixed--hardgit reset--mixed

git revertCree una nueva confirmación para deshacer la confirmación especificada usando :

git revert HEAD

Esto creará una nueva confirmación que deshace la confirmación más reciente. También puede usar un hash de confirmación u otra referencia para especificar qué confirmaciones deshacer.

1.3 La situación que ha sido empujada al almacén remoto

Si ya ha presionado, el proceso de reversión involucrará el repositorio remoto. Primero, debe usar git reseto git reverthacer un respaldo local y luego forzar la inserción en el repositorio remoto.

Use git resetla reversión a la confirmación anterior y fuerce la inserción:

git reset HEAD~1
git push -f origin <branch_name>

Úselo para git revertcrear una nueva confirmación para deshacer la confirmación especificada y empuje:

git revert HEAD
git push origin <branch_name>

Cabe señalar que la inserción forzada puede hacer que otras personas pierdan envíos en el almacén remoto, por lo que debe usarse con precaución en la colaboración en equipo.

2. Eliminar archivos

2.1 Eliminar archivos del espacio de trabajo

  • Primero, elimine los archivos en el área de trabajo. Por ejemplo, en la línea de comando, ingrese el siguiente comando:
    rm 文件名.txt
    
    Reemplace "filename.txt" con el nombre del archivo que desea eliminar.
  • Luego, agregue la operación de eliminación al área de ensayo:
    git add 文件名.txt
    
    Del mismo modo, reemplace "filename.txt" con el nombre del archivo que desea eliminar.
  • Cometer cambios:
    git commit -m "删除了文件名.txt"
    
    Reemplace "nombre de archivo eliminado.txt" con el mensaje de confirmación apropiado.

2.2 Use el comando git rm para eliminar archivos

  • Utilice git rmel comando para eliminar el archivo. Por ejemplo, ingrese el siguiente comando:

    git rm 文件名.txt
    

    Reemplace "filename.txt" con el nombre del archivo que desea eliminar.

    Esto eliminará los archivos del espacio de trabajo y del área de ensayo.

  • Cometer cambios:

    git commit -m "删除了文件名.txt"
    

    Reemplace "nombre de archivo eliminado.txt" con el mensaje de confirmación apropiado.

De los dos métodos, usar el comando git rm es más simple porque elimina archivos directamente del espacio de trabajo y del área de preparación sin ejecutar manualmente el comando git add. Tenga en cuenta que, después de eliminar un archivo, asegúrese de confirmar los cambios para que se actualicen en el historial de versiones.

2.3 Eliminar archivos de forma permanente

A veces, podemos cargar accidentalmente algunos archivos inútiles, especialmente nuestros desarrolladores que usan C y C ++, cargan accidentalmente muchos archivos intermedios compilados, por supuesto, esta operación se puede evitar a través de .gitignore. Pero a veces se puede cargar un archivo de clave secreta, tales cosas clave generalmente se mantienen confidenciales, y los desarrolladores generales no deberían poder ver dicho archivo de clave secreta. Se ha confirmado y enviado al almacén remoto, ¿cómo eliminarlo? Y no debería existir en el registro, por ejemplo, queremos eliminar definitivamente secret.cert:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch secret.cert' --prune-empty --tag-name-filter cat -- --all

git push origin master --force

-rTambién puede eliminar la carpeta, simplemente reemplace secret.cert con la carpeta y agregue parámetros después de rminserte la descripción de la imagen aquí

2.4 Pasos para eliminar archivos de forma permanente

  • Úselo git logpara encontrar el hash de confirmación del archivo para eliminar:

    git log --pretty=oneline -- 文件名.txt
    

    Reemplace "filename.txt" con el nombre del archivo que desea eliminar. Encuentre el hash de confirmación más antiguo de la salida.

  • git rebaseElimine el archivo de forma interactiva con el comando :

    git rebase -i 提交哈希^
    

    Reemplace "commit hash" con el hash que se encuentra en el paso 1. Tenga en cuenta que se agrega un signo de intercalación (^) después para indicar la confirmación anterior del hash.

    Esto abrirá un editor de texto que muestra una lista de confirmaciones para editar.

  • En un editor de texto, busque la línea del archivo que desea eliminar, pickcambie el comienzo de la línea a edit, guarde y cierre el archivo.

  • Ahora se encuentra en el estado de confirmación en el que desea eliminar el archivo. Eliminar archivos de este compromiso:

    git rm --cached 文件名.txt
    

    Reemplace "filename.txt" con el nombre del archivo que desea eliminar.

  • Vuelva a confirmar los cambios con git commit --amendel comando:

    git commit --amend
    

    Esto volverá a confirmar ese cambio y eliminará el archivo.

  • Use git rebase --continuecontinuar para reescribir el historial restante:

    git rebase --continue
    
  • Finalmente, envíe los cambios al repositorio remoto:

    git push --force
    

    Tenga en cuenta que el uso --forcede la opción sobrescribirá el historial del repositorio remoto. Esto puede afectar a otros miembros del equipo, así que asegúrese de comunicarse con los miembros de su equipo antes de hacer esto.

Después de los pasos anteriores, el archivo se eliminará de forma permanente y el historial de Git ya no contiene registros sobre el archivo. Sin embargo, esta operación tiene ciertos riesgos, proceda con precaución.

3. Ver la modificación del archivo especificado

3.1 Ver todas las confirmaciones del archivo

git log --oneline [filename]

Mostrar todos los registros de modificación de un archivo
inserte la descripción de la imagen aquí

3.2 Ver el contenido modificado de todas las confirmaciones

git log -p [filename]

Mostrar todos los cambios de confirmación
inserte la descripción de la imagen aquí

3.3 Ver la modificación en un compromiso

git show [commit_id] [filename]

Mostrar la modificación de un archivo en una confirmación
inserte la descripción de la imagen aquí

3.4 Ver las diferencias de las modificaciones locales

git diff [filename]

Verifique qué cambios específicos se han realizado en un archivo localmente
inserte la descripción de la imagen aquí

3.5 Comparar con una confirmación

git diff [commit_id] [filename]

Muestre todas las diferencias con un compromiso, el id de compromiso se puede reemplazar por HEAD, como HEAD ~ 2
inserte la descripción de la imagen aquí

3.6 Diferencias entre dos commits

git diff [commit_id1] [commit_id2]

Mostrar todas las diferencias entre dos confirmaciones
inserte la descripción de la imagen aquí

4. Sincronización entre múltiples clientes

4.1 Método de localización

Si esperamos que los colegas obtengan y envíen códigos entre sí, podemos usar los siguientes métodos:

  1. En la computadora de cada participante, busque la carpeta del repositorio Git local. En esta carpeta, ejecute el siguiente comando para iniciar un servidor Git:

    git daemon --reuseaddr --base-path=. --export-all --verbose
    

    Este comando iniciará un servidor Git, lo que permitirá que otros participantes accedan al repositorio local.

  2. Obtenga la dirección IP de cada participante y asegúrese de que estén en el mismo entorno LAN o VPN.

  3. En la computadora de cada participante, agregue el repositorio del otro participante como un repositorio remoto. Por ejemplo, suponga que la dirección IP del colega A es 192.168.1.2, luego en la computadora del colega B, ejecute el siguiente comando:

    git remote add colleagueA git://192.168.1.2/项目文件夹名称
    

    Esto agrega el repositorio del colega A como control remoto. Reemplace la dirección IP y el nombre de la carpeta del proyecto según la situación real.

  4. Cuando necesite obtener actualizaciones de código de otros colegas, use el siguiente comando:

    git fetch colleagueA 分支名称
    git merge colleagueA/分支名称
    

    Estos dos comandos obtendrán actualizaciones del repositorio del colega A y las fusionarán en la rama actual. Reemplace el nombre de la sucursal de acuerdo con la situación real.

  5. Cuando necesite enviar el código a otros colegas, primero asegúrese de que la otra parte haya agregado su almacén como almacén remoto. Luego, usa el siguiente comando:

    git push colleagueA 分支名称
    

    Este comando enviará su rama al repositorio del colega A. Reemplace el nombre de la sucursal de acuerdo con la situación real.

Nota: Este método requiere que la computadora de cada participante ejecute el servicio Git y sea accesible entre ellos. Si hay problemas de red, la sincronización puede fallar. Además, este método no tiene un servidor centralizado para administrar el historial de versiones y pueden surgir conflictos durante el proceso de colaboración. Por lo tanto, se recomienda utilizar un servidor Git centralizado para la sincronización en aplicaciones prácticas.

4.2 Enfoque centralizado

También se realiza a través de un servidor Git centralizado (como GitHub, GitLab, etc.) como estación de transferencia. Estos son algunos pasos básicos:

  1. Cree un almacén remoto: primero, debe crear un almacén remoto en un servidor Git. Esto podría ser GitHub, GitLab, Bitbucket, etc. Después de crear un almacén remoto, normalmente obtendrá una URL para acceder al almacén.

  2. Agregar un repositorio remoto: en el repositorio local, debe agregar el repositorio remoto como "remoto". Introduce el siguiente comando en la terminal:

    git remote add origin 远程仓库的URL
    

    Aquí "origen" es el alias del repositorio remoto, puede cambiarlo según sea necesario.

  3. Envíe el contenido del almacén local al almacén remoto: use el siguiente comando para enviar el contenido del almacén local al almacén remoto:

    git push -u origin master
    

    Esto empujará la rama "maestra" local a la rama "maestra" del repositorio remoto. Si está utilizando otra rama, reemplace "maestro" con el nombre de la rama correspondiente.

  4. Otros clientes clonan el repositorio remoto: en otros clientes, primero debe clonar el repositorio remoto. Usa el siguiente comando:

    git clone 远程仓库的URL
    

    Esto clonará el repositorio remoto localmente y configurará automáticamente el "origen" remoto.

  5. Obtención de actualizaciones: cuando otros clientes han realizado cambios en el almacén remoto y los han enviado, puede usar el siguiente comando para obtener los últimos cambios en el local:

    git pull origin master
    

    Del mismo modo, si está utilizando otra rama, reemplace "maestro" con el nombre de la rama correspondiente.

Supongo que te gusta

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