前几天天遇到个烦心事,想把作业提交push到github,结果弄来弄去没弄懂,作业和其他本地全被clean掉了,回收站都没找着,贼烦。根本原因都是之前学习git的使用一知半解,只求现用,现在几乎忘了。现在看着官方文档捋一遍。
¿Qué es git?
Es un sistema de control de versiones. Git utiliza el concepto de 'instantánea' para actualizar la versión. Por ejemplo, cuando un archivo bajo un proyecto cambia, el proyecto de la nueva versión solo mantendrá el archivo modificado para mayor eficiencia. Versión de archivos almacenados. Este concepto es muy importante, ¡es muy útil para entender el uso futuro!
Hay tres estados operativos para los datos:
- Modificado, lo que indica que el archivo se modificó, pero no se envió a la base de datos.
- Se ha almacenado temporalmente. El estado después de realizar la operación de agregar indica que la versión actual de un archivo modificado está marcada para incluirse en la siguiente instantánea enviada.
- Enviado, el estado después de la operación de confirmación indica que los datos se han almacenado de forma segura en la base de datos local.
Tres áreas:
área de trabajo, área de almacenamiento temporal y almacén Git.
- Área de trabajo: el lugar donde solemos modificar
- Área temporal: guarda la información sobre los cambios que se enviarán, generalmente en el directorio del repositorio de Git, incluido el índice y los datos (puede entenderse como una instantánea)
- Almacén: guarde el proyecto enviado (puede entenderse como una instantánea de guardado permanente)
No escribiré sobre el proceso de instalación de Git, puedo encontrarlo en todas partes en Internet.
Solo mira la configuración después de la instalación:
Configuracion
Después de la instalación perfecta, configuraremos nuestro propio nombre de usuario y dirección de correo electrónico en el primer paso de esta manera:
$ git config --global user.name "Elizabeth"
$ git config --global user.email "[email protected]"
Entonces podemos usar
$ git config --global user.name
$ git config --global user.email
Ver el nombre de usuario global y la dirección de correo electrónico.
comando git config se utiliza para establecer la configuración de la variable de GIT,
diferentes usuarios y diferentes almacenes se pueden establecer diferentes configuraciones
de estas variables se almacenan en tres posiciones diferentes:
/etc/gitconfig
, ~/.config/git/config
, .git/config
respectivamente, la configuración global de todos los usuarios, el perfil de usuario actual, y el almacén de configuración actual , Cuanto más alto sea el nivel de izquierda a derecha, cubrirá la configuración anterior.
Configurar usuarios de almacén:
$ git config user.name "Elizabai"
$ git config user.email "[email protected]"
Ver usuarios del almacén
git config user.name
Ver configuración global / de almacén
$ git config --global --list
$ git config --list
Obtenga el repositorio de Git
Dos maneras:
- Convierta el directorio local al repositorio de Git
- Almacén remoto clonado
1. El primer tipo:
ingrese el directorio donde se requiere control de versiones y ejecute el comando:
$ git init
Aparece el directorio .git:
aquí solo necesita saber que esta es la columna vertebral del almacén
y luego agregar el archivo al almacén:
$ git add test1.txt
$ git commit -m 'initial project version'
2. El segundo
$ git clone https://github.com/libgit2/libgit2 mylibgit
Cree un directorio llamado mylibgit, luego inicialice un archivo .git y clone desde el repositorio remoto.
Varios estados
Creamos un archivo
test2.txt con el contenido ABC en
este momento para git status
ver el estado actual:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test2.txt
nothing added to commit but untracked files present (use "git add" to track)
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Muestra que ahora estamos en la rama maestra y también enumera archivos sin seguimiento y sugerencias.
Luego git add 文件/目录
agregamos al área de preparación:
$ git add test2.txt
Mira el estado otra vez
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Lista de archivos agregados al área de preparación
Podemos utilizar git rm --cached 文件/目录
para eliminar el área de almacenamiento temporal
Si utiliza git rm 文件/目录
el archivo que git trabajará en forma conjunta puesta en escena directorio área eliminada.
Después de agregar al área de almacenamiento temporal
git add
, Git rastreará los cambios de este archivo. Modifiquemos el contenido del siguiente test2.txt y agreguemos una D para
ver el estado:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test2.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Dos nuevos consejos: el
primero nos dice que podemos usar git add <file> para actualizar el área de preparación, y el
segundo nos dice que podemos usar git restore <file> para volver a lo que modificamos antes
Usamos el primero que volverá al estado anterior a nuestra modificación, es decir, el contenido del archivo es solo ABC.
Vemos
que podemos utilizar git diff
para comparar el contenido de la zona de estacionamiento y almacén:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git diff
diff --git a/test2.txt b/test2.txt
index 48b83b8..a6bddc4 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABC
\ No newline at end of file
+ABCD
\ No newline at end of file
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Al ver el nuevo archivo, la diferencia entre el archivo antiguo y el archivo antiguo es solo D, y no hay salto de línea al final de los dos archivos.
Para ver el almacenamiento temporal adicional que se añade a los contenidos de la próxima confirmación, puede utilizar git diff --staged
o git diff --cached
comandos. Estos dos comandos compararán la diferencia entre el archivo temporal y el último archivo enviado
Enviar la actualización
Enviamos el test2.txt modificado git commit
al almacén local:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git commit -m "第一次提交"
[master (root-commit) f40e8b9] 第一次提交
1 file changed, 1 insertion(+)
create mode 100644 test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Echa un vistazo al estado:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
nothing to commit, working tree clean
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Si sospechamos que el área de preparación anterior es problemática, Git también proporciona accesos directos git commot -a
para enviar nuestros archivos modificados y archivos de área de preparación, de modo que podamos git add
enviar directamente incluso si somos demasiado vagos .
Ver el historial de envíos
Luego, en la sección anterior test2.txt, agregué E y F respectivamente y los envié
en dos envíos. Luego podemos usar el almacén git log
para ver el historial de envíos:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git log
commit 3868bcdb2f716c560177d1242875e84245f94ad7 (HEAD -> master)
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:58 2020 +0800
第三次提交
commit 0f06de25f32c9f390e5b83fb2eee055bcc05891c
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:32 2020 +0800
第二次提交
commit f40e8b946f2f5c39b26629cab15508f275ab0033
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 16:51:21 2020 +0800
第一次提交
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git log -p
commit 3868bcdb2f716c560177d1242875e84245f94ad7 (HEAD -> master)
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:58 2020 +0800
第三次提交
diff --git a/test2.txt b/test2.txt
index 402476b..1c5f8ba 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABCDE
\ No newline at end of file
+ABCDEF
\ No newline at end of file
commit 0f06de25f32c9f390e5b83fb2eee055bcc05891c
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:32 2020 +0800
第二次提交
diff --git a/test2.txt b/test2.txt
index a6bddc4..402476b 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABCD
\ No newline at end of file
+ABCDE
\ No newline at end of file
commit f40e8b946f2f5c39b26629cab15508f275ab0033
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 16:51:21 2020 +0800
第一次提交
diff --git a/test2.txt b/test2.txt
new file mode 100644
index 0000000..a6bddc4
--- /dev/null
+++ b/test2.txt
@@ -0,0 +1 @@
+ABCD
\ No newline at end of file
END
(Presione q para salir) enumera la información presentada cada vez y la diferencia en comparación con la anterior, a menudo el hexadecimal es el número de versión.
Operación de deshacer
Reenviar:git commit --amend
Cancelar el almacenamiento temporal de un archivo después de cancelar la operación temporal de varios archivos git reset HEAD <file>...
Deshacer el envío del archivo :, git checkout -- <file>...
pero esto es un poco peligroso, puedes entender que este comando es: ¡eliminará la última versión del almacén para sobrescribir el archivo! Después de sacar, la última versión del archivo en el almacén también se ha ido.
Ambas operaciones de deshacer son riesgosas, porque el archivo del área de trabajo se modificó durante nuestro período.
Configuración de almacén remoto
1. Añadir url: git remote add url名字 url
2. Comprobar url existentegit remote -v
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git remote add Url1 https://github.com/xxxx/xxxx.git
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git remote -v
Url1 https://github.com/xxxx/xxxx.git (fetch)
Url1 https://github.com/xxxx/xxxx.git (push)
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
Tire para
$ git fetch <remote>
extraer los datos que aún no tenemos, debe fusionar y
empujar manualmente
$ git push <remote> <branch>
Etiqueta
Crear etiqueta: etiquetar
la versión actual v1, -m especificar información de la etiqueta:
git tag -a v1 -m "my version 1.4"
enviar la versión actual al servidor junto con la etiqueta:
$ git push Url1 v1
eliminar la etiqueta del almacén local
git tag -d <tagname>
eliminar la etiqueta del almacén remoto
$ git push Url1 :refs/tags/v1.4-lw
Cambiar versión
Ver número de versión
Volver a la versión anterior:
git reset --hard HEAD^
la versión anterior:
git reset --hard HEAD^
volver a la versión anterior:
git reset --hard HEAD~3
volver a la versión especificada
git reset --hard 91010df
volver a ver todas las versiones iterativas después de volver
git reflog