Git es uno de los sistemas de control de versiones distribuidos más avanzados del mundo.
—— Entusiastas de Git
Git es una "herramienta de administración de versiones distribuidas", que tiene demasiadas ventajas: combinación más conveniente, administración más conveniente, sistema más robusto, menos dependencia de la red, menos "contaminación del almacén" , Lo que hace que Git sea la mejor manera de desarrollar código en colaboración.
Este artículo presentará más de setenta comandos y técnicas de Git de uso común. Echemos un vistazo al encanto de un proyecto de Github que supera las 1.1W estrellas.
Debe leer
Si no ha usado Git antes, puede aprender el tutorial de Git white [1] Primeros pasos:
-
¡Asegúrese de probar el efecto del comando antes de usarlo en el entorno de trabajo para evitar consecuencias irreparables! No vengas a mi con un machete
-
Todos los comandos están
git version 2.7.4 (Apple Git-66)
bajo prueba -
Concepto unificado:
-
Área de trabajo: cambios (adición y eliminación de archivos y contenidos)
-
Área de almacenamiento temporal: ingrese el comando:
git add 改动的文件名
este cambio se colocará en el 'área de almacenamiento temporal' -
Almacén local (abreviatura: local): ingrese el comando :,
git commit 此次修改的描述
este cambio se coloca en el 'almacén local', cada confirmación, lo llamo una 'versión'. -
Almacén remoto (abreviatura: remoto): ingrese el comando :,
git push 远程仓库
este cambio se colocará en el 'almacén remoto' (GitHub, etc.) -
commit-id: comando de salida :,
git log
la línea superiorcommit xxxxxx
, la cadena detrás es commit-id
Directorio
-
Mostrar información de ayuda
-
De vuelta al almacén remoto
-
Restablecer la primera confirmación
-
Ver lista de archivos de conflicto
-
Mostrar la diferencia entre el área de trabajo y el área de preparación
-
Muestra la diferencia entre el área de ensayo y la última versión.
-
Muestra la diferencia entre el área de ensayo, el espacio de trabajo y la última versión.
-
Cambia rápidamente a la rama anterior
-
Eliminar la rama que se ha fusionado en maestro
-
Mostrar la situación de las sucursales locales asociadas con almacenes remotos.
-
Sucursal remota asociada
-
Listar todas las ramas remotas
-
Lista de sucursales locales y remotas
-
Ver la correspondencia entre sucursales remotas y sucursales locales
-
Eliminé la sucursal de forma remota y quería eliminarla localmente
-
Crear y cambiar a sucursal local
-
Cree y cambie a una sucursal local desde una sucursal remota
-
Eliminar sucursal local
-
Eliminar sucursal remota
-
Renombrar sucursal local
-
Ver etiquetas
-
Ver detalles de la etiqueta
-
Crear etiquetas localmente
-
Empuje etiquetas al almacén remoto
-
Eliminar etiqueta local
-
Eliminar etiquetas remotas
-
Cambiar de nuevo a una etiqueta
-
Descartar cambios en el espacio de trabajo
-
Recuperar archivos borrados
-
Restaurar la modificación de una determinada confirmación agregando una nueva confirmación
-
Regrese al estado de un compromiso determinado y elimine el siguiente compromiso
-
Modificar la descripción de la última confirmación
-
Ver historial de confirmaciones
-
Mostrar registros de comando git actualizados localmente de HEAD
-
Modificar nombre del autor
-
Modificar la URL del almacén remoto
-
Aumentar almacén remoto
-
Listar todos los almacenes remotos
-
Ver cambios dentro de dos semanas
-
Poner un commit de la rama A en la rama B
-
Alias el comando git
-
Almacene los cambios actuales, pero no confirme
-
Guarde el estado actual, incluidos los archivos sin seguimiento
-
Mostrar todos los escondites
-
Volver a un estado oculto
-
Regrese al estado del último alijo y elimine este alijo
-
Eliminar todo el alijo
-
Saque la modificación de un archivo de alijo
-
Mostrar todos los archivos rastreados
-
Mostrar todos los archivos sin seguimiento
-
Mostrar todos los archivos ignorados
-
Eliminar por la fuerza los archivos no rastreados
-
Eliminar por la fuerza los directorios no rastreados
-
Mostrar historial de confirmación simplificado
-
Vea quién escribió un código
-
Exportar una rama determinada a un archivo
-
Importar sucursal desde el paquete
-
Guardar automáticamente antes de ejecutar rebase
-
Desde el almacén remoto, de acuerdo con la ID, despliegue un cierto estado a la sucursal local
-
Mostrar detalles de cambios en una fila
-
Claro
.gitignore
archivo grabado en el archivo -
Mostrar todos los alias y configuraciones
-
Mostrar archivos ignorados
-
El historial de confirmación muestra que Branch1 lo tiene, pero Branch2 no tiene confirmación
-
Mostrar firma GPG en el registro de confirmación
-
Eliminar configuración global
-
Cree y cambie a una nueva rama, y esta rama no tiene ninguna confirmación
-
Mostrar el contenido de un archivo en cualquier rama
-
clonar la rama individual especificada
-
clonar último compromiso
-
Ignorar cambios en un archivo
-
Ignorar cambios en los permisos de archivo
-
Lista todas las ramas de Git en el orden de la última confirmación
-
Encuentra contenido relevante en el registro de confirmación
-
Coloque el archivo especificado en el área de almacenamiento temporal en el área de trabajo.
-
Fuerza de empuje
-
git configure http y calcetines proxy
-
git configure el proxy ssh
-
Una imagen detallada
-
Enviar Enviar mensajes con gracia
-
Contactame
Uso del comando
Mostrar información de ayuda
git help -g
La salida del comando de la siguiente manera:
The common Git guides are:
attributes Defining attributes per path
cli Git command-line interface and conventions
core-tutorial A Git core tutorial for developers
cvs-migration Git for CVS users
diffcore Tweaking diff output
everyday A useful minimum set of commands for Everyday Git
glossary A Git Glossary
hooks Hooks used by Git
ignore Specifies intentionally untracked files to ignore
modules Defining submodule properties
namespaces Git namespaces
repository-layout Git Repository Layout
revisions Specifying revisions and ranges for Git
tutorial A tutorial introduction to Git
tutorial-2 A tutorial introduction to Git: part two
workflows An overview of recommended workflows with Git
'git help -a' and 'git help -g' list available subcommands and some concept guides. See 'git help <command>' or 'git help <concept>' to read about a specific subcommand or concept.
De vuelta al almacén remoto
Descarte todos los cambios locales y regrese al estado del almacén remoto.
git fetch --all && git reset --hard origin/master
Restablecer la primera confirmación
Es decir, vuelva a colocar todos los cambios en el área de trabajo y borre todas las confirmaciones, para que pueda volver a enviar la primera confirmación.
git update-ref -d HEAD
Mostrar la diferencia entre el área de trabajo y el área de preparación
Área de trabajo de salida diferente (diferente) y área temporal.
git diff
También puede mostrar los cambios de archivo entre dos confirmaciones en el almacén local:
git diff <commit-id> <commit-id>
Muestra la diferencia entre el área de ensayo y la última versión.
La diferencia entre el área de preparación de salida y la última versión local (commit) es diferente.
git diff --cached
Muestra la diferencia entre el área de ensayo, el espacio de trabajo y la última versión.
Espacio de trabajo de salida diferenciado (diferente), área de preparación y la versión local más reciente (commit).
git diff HEAD
Cambia rápidamente a la rama anterior
git checkout -
Eliminar ramas que se han fusionado en maestro
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
Mostrar el estado de la sucursal local asociada con el almacén remoto
git branch -vv
Sucursal remota asociada
Después de la asociación, git branch -vv puede mostrar el nombre de la sucursal remota asociada y Push directamente al almacén remoto: git push, no es necesario especificar el almacén remoto.
git branch -u origin/mybranch
O agregue el parámetro -u al presionar
git push origin/mybranch -u
Listar todas las ramas remotas
El parámetro -r es equivalente a: remoto
git branch -r
Citar sucursales locales y remotas
El parámetro -a es equivalente a: todos
git branch -a
Construir y cambiar a sucursal local
git checkout -b <branch-name>
Construir desde sucursal remota y cambiar a sucursal local
git checkout -b <branch-name> origin/<branch-name>
Eliminar sucursal local
git branch -d <local-branchname>
Eliminar rama remota
git push origin --delete <remote-branchname>
O
git push origin :<remote-branchname>
Renombrar sucursal local
git branch -m <new-branch-name>
Ver etiquetas
git tag
Mostrar la etiqueta más reciente de la rama actual
git describe --tags --abbrev=0
Ver detalles de la etiqueta
git tag -ln
Construir etiquetas localmente
git tag <version-number>
La etiqueta predeterminada es la confirmación más reciente. Si necesita especificar la etiqueta de confirmación:
$ git tag -a <version-number> -m "v1.0 发布 (描述)" <commit-id>
Empuje la etiqueta al almacén remoto
En primer lugar, debemos asegurarnos de que la etiqueta se construya localmente antes de poder enviar la etiqueta al almacén remoto:
git push origin <local-version-number>
Empuje todas las etiquetas a la vez y sincronícelas con el almacén remoto:
git push origin --tags
Eliminar etiqueta local
git tag -d <tag-name>
Eliminar etiquetas remotas
Para eliminar una etiqueta remota, primero debe eliminar la etiqueta local y luego ejecutar el siguiente comando:
git push origin :refs/tags/<tag-name>
Cambiar de nuevo a una etiqueta
En general, las etiquetas se agregarán antes de conectarse, para evitar problemas después de conectarse y volver rápidamente a la versión anterior. El siguiente comando vuelve al estado bajo una determinada etiqueta:
git checkout -b branch_name tag_name
Descartar cambios en el espacio de trabajo
git checkout <file-name>
Descarte todos los cambios:
git checkout .
Recuperar archivos eliminados
git rev-list -n 1 HEAD -- <file_path> # 得到 deleting_commit
git checkout <deleting_commit>^ -- <file_path> # 回到移除文件 deleting_commit 之前的状态
Revertir los cambios de una determinada confirmación agregando una nueva confirmación
git revert <commit-id>
Regrese al estado de una determinada confirmación y elimine la siguiente confirmación
Diferencia con la reversión: el comando de reinicio borrará todas las confirmaciones después de una determinada identificación de confirmación
git reset <commit-id> # 默认就是-mixed 参数。
git reset –mixed HEAD^ # 回退至上个版本,它将重置 HEAD 到另外一个 commit, 并且重置暂存区以便和 HEAD 相匹配,但是也到此为止。工作区不会被更改。
git reset –soft HEAD~3 # 回退至三个版本之前,只回退了 commit 的信息,暂存区和工作区与回退之前保持一致。如果还要提交,直接 commit 即可
git reset –hard <commit-id> # 彻底回退到指定 commit-id 的状态,暂存区和工作区也会变为指定 commit-id 版本的内容
Cambiar la descripción de la última confirmación
Si hay cambios en el área de preparación, los cambios en el área de preparación también se enviarán a la confirmación anterior
git commit --amend
Ver historial de confirmaciones
git log
Ver contribuyentes de un fragmento de código
culpa significa "culpa", ya sabes.
git blame <file-name>
Mostrar registros de comando git actualizados localmente de HEAD
Los comandos de git como commint, enmienda, cherry-pick, reset, revert, etc., que se actualizan cada vez, se registrarán (ramas ilimitadas), al igual que el historial del shell. De esta manera, puede restablecer cualquier operación después de actualizar HEAD, no solo para volver al estado después de una confirmación bajo la rama actual.
git reflog
Cambiar nombre del autor
git commit --amend --author='Author Name <[email protected]>'
Cambiar la URL del almacén remoto
git remote set-url origin <URL>
Aumentar almacén remoto
git remote add origin <remote-url>
Listar todos los almacenes remotos
git remote
Ver cambios dentro de dos semanas
git whatchanged --since='2 weeks ago'
Poner un commit de la rama A en la rama B
Este proceso requiere el comando cherry-pick, consulte [2]
git checkout <branch-name> && git cherry-pick <commit-id>
Alias el comando git
Comandos simplificados
git config --global alias.<handle> <command>
比如:git status 改成 git st,这样可以简化命令
git config --global alias.st status
Guarde los cambios actuales sin comprometerse
Para más detalles, consulte el tutorial de git del profesor Liao Xuefeng
git stash
Almacenar el estado actual, incluidos los archivos no rastreados
archivos sin seguimiento: archivos recién creados
git stash -u
Mostrar todos los escondites
git stash list
Volver a un estado oculto
git stash apply <stash@{n}>
Regrese al estado del último alijo y elimine el alijo
git stash pop
Eliminar todo el alijo
git stash clear
Tomar un cambio de archivo de alijo
git checkout <stash@{n}> -- <file-path>
Mostrar todos los archivos rastreados
git ls-files -t
Mostrar todos los archivos sin seguimiento
git ls-files --others
Mostrar todos los archivos ignorados
git ls-files --others -i --exclude-standard
Forzar la eliminación de archivos sin seguimiento
Se puede usar para eliminar archivos recién creados. Si no se especifica ningún nombre de archivo, se borran todos los archivos no rastreados que funcionan. El comando limpio, preste atención a dos puntos:
1. Después de limpiar, los archivos eliminados no se pueden recuperar
2. No afecta los cambios en los archivos rastreados, solo elimina los archivos no rastreados
git clean <file-name> -f
Forzar la eliminación de directorios no rastreados
Se puede usar para eliminar directorios recién creados Nota: Este comando también se puede usar para eliminar archivos no rastreados. Vea el artículo anterior para más detalles.
git clean <directory-name> -df
Mostrar historial de confirmación simplificado
git log --pretty=oneline --graph --decorate --all
Exportar una rama a un archivo
git bundle create <file> <branch-name>
Importar sucursal desde el paquete
Cree una nueva rama, el contenido de la rama es el contenido exportado por el comando git bundle create anterior
git clone repo.bundle <repo-dir> -b <branch-name>
Guardar automáticamente antes de ejecutar rebase
git rebase --autostash
Desde el almacén remoto, de acuerdo con la ID, despliegue un cierto estado a la sucursal local
git fetch origin pull/<id>/head:<branch-name>
Mostrar cambios en una fila en detalle
git diff --word-diff
Borrar los archivos grabados en el archivo gitignore
git clean -X -f
Mostrar todos los alias y configuraciones
Nota: config se divide en: directorio actual (local) y configuración global (golbal), el valor predeterminado es la configuración del directorio actual
git config --local --list (当前目录)
git config --global --list (全局)
Mostrar archivos ignorados
git status --ignored
El historial de confirmación muestra que Branch1 lo tiene, pero Branch2 no tiene confirmación
git log Branch1 ^Branch2
Mostrar firma GPG en el registro de confirmación
git log --show-signature
Eliminar configuraciones globales
git config --global --unset <entry-name>
Cree y cambie a una nueva rama, y esta rama no tiene ninguna confirmación
Equivalente a guardar cambios, pero reescribiendo el historial de confirmaciones
git checkout --orphan <branch-name>
Mostrar el contenido de un archivo en cualquier rama
git show <branch-name>:<file-name>
clonar la rama individual especificada
git clone -b <branch-name> --single-branch https://github.com/user/repo.git
Ignorar cambios en un archivo
Desactiva los cambios en el archivo de pista especificado, es decir, Git no registrará los cambios en este archivo
git update-index --assume-unchanged path/to/file
Recupere cambios para rastrear archivos especificados
git update-index --no-assume-unchanged path/to/file
Ignorar cambios en los permisos de archivo
Ya no trata los cambios en los permisos de archivos como cambios
git config core.fileMode false
Lista todas las ramas de Git en el orden de la última confirmación
Lo último está en la cima
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/
Encuentra contenido relevante en el registro de confirmación
Buscar por grep, texto dado: el campo que se debe encontrar
git log --all --grep='<given-text>'
Coloque el archivo especificado en el área de almacenamiento temporal en el área de trabajo.
No se agregaron parámetros, el valor predeterminado es -mixed
git reset <file-name>
Force Push
git push -f <remote-name> <branch-name>