El tutorial de aprendizaje Git más completo de la historia.

 

 

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:

  1. ¡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

  2. Todos los comandos están git version 2.7.4 (Apple Git-66)bajo prueba

  3. 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 logla línea superior commit 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 .gitignorearchivo 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>

 

Publicado 45 artículos originales · ganado elogios 2 · Vistas 5228

Supongo que te gusta

Origin blog.csdn.net/xixiaoyaoww/article/details/105037023
Recomendado
Clasificación