Directorio de artículos
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 checkout
o .git restore
Por ejemplo, si desea deshacer los cambios en file1.txt, puede usar el siguiente comando:
git checkout -- file1.txt
o usa git restore
el 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 reset
o git revert
para retroceder.
Use git reset
el 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 --soft
para especificar el método alternativo. De forma predeterminada, se utiliza el patrón .--mixed
--hard
git reset
--mixed
git revert
Cree 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 reset
o git revert
hacer un respaldo local y luego forzar la inserción en el repositorio remoto.
Use git reset
la 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 revert
crear 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:
Reemplace "filename.txt" con el nombre del archivo que desea eliminar.rm 文件名.txt
- Luego, agregue la operación de eliminación al área de ensayo:
Del mismo modo, reemplace "filename.txt" con el nombre del archivo que desea eliminar.git add 文件名.txt
- Cometer cambios:
Reemplace "nombre de archivo eliminado.txt" con el mensaje de confirmación apropiado.git commit -m "删除了文件名.txt"
2.2 Use el comando git rm para eliminar archivos
-
Utilice
git rm
el 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
-r
También puede eliminar la carpeta, simplemente reemplace secret.cert con la carpeta y agregue parámetros después de rm
2.4 Pasos para eliminar archivos de forma permanente
-
Úselo
git log
para 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 rebase
Elimine 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,
pick
cambie el comienzo de la línea aedit
, 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 --amend
el comando:git commit --amend
Esto volverá a confirmar ese cambio y eliminará el archivo.
-
Use
git rebase --continue
continuar 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
--force
de 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
3.2 Ver el contenido modificado de todas las confirmaciones
git log -p [filename]
Mostrar todos los cambios de confirmación
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
3.4 Ver las diferencias de las modificaciones locales
git diff [filename]
Verifique qué cambios específicos se han realizado en un archivo localmente
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
3.6 Diferencias entre dos commits
git diff [commit_id1] [commit_id2]
Mostrar todas las diferencias entre dos confirmaciones
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:
-
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.
-
Obtenga la dirección IP de cada participante y asegúrese de que estén en el mismo entorno LAN o VPN.
-
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.
-
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.
-
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:
-
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.
-
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.
-
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.
-
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.
-
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.