Versión 2020 del tutorial de git (versión de texto + versión de video)

Inserte la descripción de la imagen aquí

Si no comprende git, ¿cómo puede decir que es un buen desarrollador? Algunas personas piensan que git son solo unos pocos comandos. Sin embargo, debido a que no entendemos git en nuestro trabajo, nos ponemos a nosotros mismos y a todo el equipo en un modo ineficiente. Por lo tanto, no solo necesitamos comprender los principios de git y las soluciones a los problemas comunes de administración de versiones, sino también comprender en base a El flujo de trabajo del trabajo en equipo de git.
Hoy en día, casi todo nuestro desarrollo es inseparable de los proyectos de código abierto, y github es la base de gestión de proyectos de código abierto más grande del mundo. Algunas personas también lo llaman el sitio de citas entre personas del mismo sexo más grande del mundo, así que cómo administrar proyectos de código abierto en este sitio web mágico Sí, ¿cómo podemos participar en la adquisición o incluso en el desarrollo de proyectos de código abierto?

Github es la gestión de proyectos de código abierto, entonces, ¿cómo gestionan las grandes empresas sus propios proyectos? Esto tiene que mencionar gitlab, entonces, ¿cómo construir gitlab, cómo administrar permisos, cómo administrar proyectos, como
revisión de código , CI / CD y gestión de contenido de conocimiento?

Será respondido en este artículo.

**

1. Conceptos básicos de Git

**
1.1 Instalar Git en Linux El
comando de instalación es el siguiente:

sudo apt-get install git

Una vez completada la instalación, ingrese "git --version" para ver la versión de git. Si aparece "git version xxx", la instalación es exitosa.
Digresión: para Debian o Ubuntu Linux más antiguos, el comando debe cambiarse a sudo apt-get install git-core, porque solía haber un software llamado GIT (GNU Interactive Tools), pero Git solo se puede llamar git-core. Debido a que Git es tan famoso, GNU Interactive Tools se cambió a gnuit, y git-core se cambió oficialmente a git.
Si es otra versión de Linux, puede instalarla directamente desde el código fuente. Primero descargue el código fuente del sitio web oficial de Git, luego descomprímalo y luego ingrese: ./config, make, sudo make install estos comandos para instalarlo.

1.2 Instalar Git en Mac OS X
Si está utilizando una Mac para el desarrollo, hay dos formas de instalar Git.
Una es instalar homebrew y luego instalar Git a través de homebrew. Para métodos específicos, consulte la documentación de homebrew: http://brew.sh/.
El segundo método es más simple y el método recomendado es instalar Xcode directamente desde la AppStore. Xcode integra Git, pero no está instalado por defecto. Necesitas ejecutar Xcode, seleccionar el menú "Xcode" -> "Preferencias", y encontrarlo en la ventana emergente "Descargas", seleccione "Herramientas de línea de comandos", haga clic en "Instalar" para completar la instalación.
Inserte la descripción de la imagen aquí

1.3 Instalar Git en Windows Dice
que todo el mundo usa el sistema Windows, por lo que git se desarrolló y ejecutó primero en el sistema Linux, y luego se trasladó gradualmente a Windows.
Vaya a la página de descarga del sitio web oficial de git (https://git-scm.com/downloads) para descargar Git-2.19.1-64-bit.exe, y luego instálelo. Una vez completada la instalación, se creará la herramienta git bash en el escritorio, y si Cuando hacemos clic con el botón derecho del mouse en el escritorio, dos elementos de menú "git gui here" y "git bash here" también aparecerán en el menú contextual.

1.4 Configurar el entorno de git
Lo primero que debe hacer después de instalar Git es configurar su nombre de usuario y dirección de correo electrónico. Esto es muy importante, porque cada confirmación de Git utilizará esta información, y se escribirá en cada una de sus confirmaciones y no se puede cambiar:

$ git config --global user.name "lizhiyong"

$ git config --global user.email [email protected]

Nuevamente, si usa la opción --global, entonces el comando solo debe ejecutarse una vez, porque Git usará esa información sin importar lo que haga en el sistema más adelante. Cuando desee utilizar un nombre de usuario y una dirección de correo electrónico diferentes para un proyecto específico, puede ejecutar el comando sin la opción --global en ese directorio del proyecto para configurarlo.
Muchas herramientas de GUI lo ayudarán a configurar esta información la primera vez que la ejecute.
También puede usar git config --list para ver todas las configuraciones de git.

1.5 Obtener ayuda
Si necesita ayuda mientras usa Git, hay tres formas de encontrar el manual de los comandos de Git:

$ git help <verb>

$ git <verb> --help

$ man git-<verb>

Por ejemplo, para obtener el manual del comando config, ejecute

$ git help config

Por supuesto, si tiene problemas, también puede consultar la documentación oficial de git.
https://git-scm.com/book/zh/v2

La versión en video del tutorial se ha actualizado a [Manejar emergencias]

Cuenta oficial de VX Siga Zero Sound Academy para obtener

2. Comandos de GIT de uso común

2.1 Crear un repositorio
¿Qué es un repositorio? El repositorio también se conoce como almacén, el nombre en inglés es repositorio. Simplemente puede entenderlo como un directorio. Todos los archivos en este directorio pueden ser administrados por Git. Git puede rastrear la modificación y eliminación de cada archivo para que se pueda rastrear en cualquier momento. Historial o "restaurar" en algún momento en el futuro.
Por lo tanto, es muy simple crear un repositorio. Use el comando git init para crear un nuevo repositorio git, que se usa para convertir un proyecto existente pero no controlado por versiones en un repositorio Git, o para crear un nuevo repositorio vacío. La mayoría de los comandos de Git no están disponibles en repositorios no inicializados, por lo que este es su primer comando para ejecutar un nuevo proyecto.
Ejecutar el comando git init creará un nuevo directorio .git en el directorio raíz de su proyecto, que contiene todos los metadatos necesarios para su proyecto. A excepción del directorio .git, los proyectos existentes no se cambiarán (al igual que SVN, Git no impone un directorio .git en cada subdirectorio).
P.ej:

$ mkdir learngit
$ cd learngit
$ git init

El comando pwd se usa para mostrar el directorio actual. En mi Mac, este repositorio se encuentra en / Users / michael / learngit.
Si utiliza un sistema Windows, para evitar todo tipo de problemas inexplicables, asegúrese de que el nombre del directorio (incluido el directorio principal) no contenga chino.
El segundo paso es convertir este directorio en un almacén que puede ser administrado por Git a través del comando git init:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

Git construye instantáneamente el repositorio y le dice que es un repositorio de Git vacío. Los lectores cuidadosos pueden encontrar que hay un directorio .git adicional en el directorio actual. Este directorio es usado por Git para rastrear y administrar el repositorio. No modifique los archivos en este directorio manualmente; de ​​lo contrario, los cambios se estropearán y el repositorio de Git se destruirá.
Si no ve el directorio .git, es porque este directorio está oculto por defecto y puede verlo con el comando ls -ah.
No es necesario crear un repositorio Git en un directorio vacío, también es posible elegir un directorio que ya tenga algo. Sin embargo, no se recomienda que utilice el proyecto de la empresa que está desarrollando para aprender Git, de lo contrario no será responsable de todas las consecuencias.

Cree un almacén vacío
Primero seleccione un directorio como el almacén Git, asumiendo que es /srv/sample.git, ingrese el comando en el directorio / srv:

$ sudo git init --bare sample.git

El uso de -bare creará un almacén básico. El almacén básico no tiene espacio de trabajo. Debido a que el almacén de Git en el servidor es puramente para compartir, los usuarios no pueden iniciar sesión en el servidor directamente para cambiar el espacio de trabajo, y el almacén de Git en el servidor suele estar en. Fin de git. Luego, cambie el propietario a git:
$ sudo chown -R git: git sample.git

Agregar archivos a almacenes no desnudos En
primer lugar, permítame aclarar que todos los sistemas de control de versiones solo pueden rastrear cambios en archivos de texto, como archivos TXT, páginas web, todos los códigos de programa, etc., y Git no es una excepción. El sistema de control de versiones puede indicarle todos los cambios, como agregar una palabra "Linux" en la línea 5 y eliminar una palabra "Windows" en la línea 8. Aunque los archivos binarios de imágenes y videos también pueden ser administrados por el sistema de control de versiones, no pueden rastrear los cambios de los archivos. Solo pueden encadenar cada cambio de los archivos binarios, es decir, solo saber que la imagen se cambia de 100KB a 120KB, pero al final Lo que se ha cambiado, el sistema de control de versiones no lo sabe ni puede saberlo.
Desafortunadamente, el formato Word de Microsoft es un formato binario. Por lo tanto, el sistema de control de versiones no puede realizar un seguimiento de los cambios en los archivos de Word. El ejemplo anterior es solo para demostración. Si desea utilizar el sistema de control de versiones, debe escribirlo en texto plano. expediente.
Debido a que el texto está codificado, por ejemplo, el chino suele utilizar la codificación GBK y el japonés la codificación Shift_JIS. Si no hay problemas históricos, se recomienda encarecidamente utilizar la codificación UTF-8 estándar. Todos los idiomas utilizan la misma codificación. No hay conflicto y todos Apoyado por la plataforma.

Se debe prestar especial atención a los zapatos de los niños que usan Windows:
nunca use el Bloc de notas que viene con Windows para editar archivos de texto. La razón es que el equipo de Microsoft que desarrolló el Bloc de notas utilizó un comportamiento muy retrasado mental para guardar archivos codificados en UTF-8. Ellos agregaron inteligentemente caracteres 0xefbbbf (hexadecimales) al principio de cada archivo. Encontrará muchos Por ejemplo, la primera línea de la página web puede mostrar un "?", Se informará un error gramatical tan pronto como se compile el programa que sea claramente correcto, etc., todos son causados ​​por el comportamiento de retraso mental del Bloc de notas. Le sugiero que descargue Notepad ++ en lugar de Notepad, que no solo es poderoso, ¡sino también gratis! Recuerde establecer la codificación predeterminada de Notepad ++ en UTF-8 sin BOM:
Inserte la descripción de la imagen aquí
Vuelva al negocio, ahora escribimos un archivo readme.txt con el siguiente contenido:

Git is a version control system.
Git is free software.

Asegúrese de ponerlo en el directorio learnngit (los subdirectorios también están bien), porque este es un repositorio de Git, y no importa cuán poderoso sea Git en otros lugares, este archivo no se puede encontrar.
En comparación con los tres pasos necesarios para poner el elefante en el refrigerador, solo se necesitan dos pasos para colocar un archivo en el repositorio de Git.
El primer paso es usar el comando git add para decirle a Git que agregue el archivo al almacén:
$ git add readme.txt
ejecuta el comando anterior, no hay pantalla, así es, la filosofía de Unix es "no hay noticias son buenas noticias", lo que indica Agregado exitosamente.
En el segundo paso, use el comando git commit para decirle a Git que envíe el archivo al almacén:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

Explica brevemente el comando git commit. La entrada detrás de -m es la descripción de este envío. Puedes ingresar cualquier contenido. Por supuesto, es mejor ser significativo, para que puedas encontrar fácilmente el registro de cambios en el historial.
¿No quiere ingresar -m "xxx" en problemas? De hecho, hay una manera de hacer esto, pero no se recomienda que lo haga, porque la descripción de entrada es importante para usted y los demás. Si realmente no desea ingresar la descripción, busque en Google. No le diré este parámetro.
Después de que el comando git commit se ejecute con éxito, le dirá que se ha cambiado un archivo (el archivo readme.txt que agregamos) y que se han insertado dos líneas de contenido (readme.txt tiene dos líneas).
¿Por qué Git necesita agregar archivos en dos pasos, agregar y confirmar? Debido a que la confirmación puede enviar muchos archivos a la vez, puede agregar diferentes archivos varias veces, como:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

2.2 El primer paso para configurar un servidor git es

crear un usuario git para ejecutar el servicio git:

$ sudo adduser git
$ passwd git
$ groupadd git
$ usermod -G git git

El segundo paso es crear un certificado de inicio de sesión:
primero cambiamos al usuario de git y creamos las claves pública y privada para el usuario de git:

$ su git
$ ssh-keygen -t rsa //以rsa的加密方式生成秘钥对
$ cd /home/git/.ssh
$ touch authorized_keys

Recopile las claves públicas de todos los usuarios que necesitan iniciar sesión, que es su propio archivo id_rsa.pub, e importe todas las claves públicas al archivo /home/git/.ssh/authorized_keys, una por línea.

El tercer paso es inicializar el repositorio de Git:
primero seleccione un directorio como repositorio de Git, asumiendo que es /srv/nginx-docs.git, ingrese el comando en el directorio / srv:

$ sudo git init --bare nginx-docs.git

Git creará un almacén simple. El almacén simple no tiene espacio de trabajo. Debido a que el almacén Git en el servidor es puramente para compartir, los usuarios no pueden iniciar sesión en el servidor directamente para cambiar el espacio de trabajo, y el almacén Git en el servidor generalmente termina con .git . Luego, cambie el propietario a git:
$ sudo chown -R git: git nginx-docs.git

El cuarto paso es deshabilitar el inicio de sesión de shell:
como administrador del servidor, hay una cosa más a considerar sobre SSH, y ese es el problema de seguridad de SSH. Al introducir el protocolo local anterior, dijimos que este método no puede controlar la operación del usuario en el almacén de Git y no puede evitar que el usuario dañe el almacén de Git de forma intencionada o no. El mismo problema existe cuando se utiliza el protocolo SSH. Los usuarios pueden extraer y enviar código a través de SSH. , Lo que significa que los usuarios pueden conectarse al servidor a través de SSH y realizar cualquier operación en el repositorio de Git, lo cual es algo muy preocupante.
Por lo tanto, también debemos establecer algunas restricciones en la cuenta de git. Por defecto, el shell de inicio de sesión de nuestra nueva cuenta es / bin / bash, y esta configuración está en el archivo / etc / passwd:

git:x:1000:1000:git,,,:/home/git:/bin/bash

Puede utilizar el comando chsh para modificar el shell de inicio de sesión del usuario para que no pueda acceder al servidor a través de SSH. ¿Cómo modificarlo? Podemos ver el archivo / etc / shells, que define todos los shells de inicio de sesión que se pueden usar. Puede cambiar / bin / bash a cualquiera de estos:

root@myserver:~# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Obviamente, estos shells no son lo que queremos. ¿Existe un shell que solo permita a los usuarios realizar operaciones git y no otras operaciones? Afortunadamente, el paquete Git proporciona un shell de inicio de sesión llamado git-shell, podemos agregarlo, generalmente ubicado en / usr / bin / git-shell. Usamos chsh para modificar el shell de inicio de sesión de git:

root@myserver:~# chsh git
Changing the login shell for git
Enter the new value, or press ENTER for the default
    Login Shell [/bin/bash]: /usr/bin/git-shell

De esta forma, cuando el usuario git se conecte al servidor vía SSH, será directamente rechazado.

El quinto paso, clonar el almacén remoto:
ahora, otros usuarios pueden clonar el almacén remoto a través del comando git clone y ejecutarlo en sus respectivas computadoras:
$ git clone git @ server: /srv/nginx-docs.git
Clonación into'nginx -docs "...
advertencia: Parece que has clonado un repositorio vacío. El
resto del envío es simple.

Administrar claves públicas
Si el equipo es pequeño, es factible recopilar las claves públicas de todos y ponerlas en el archivo /home/git/.ssh/authorized_keys del servidor. Si el equipo tiene unos pocos cientos de personas, no hay forma de jugar así. En este momento, puede usar Gitosis para administrar la clave pública.
No explicaremos cómo jugar a Gitosis aquí. Los equipos de varios cientos de personas están básicamente entre los 500 mejores. Creo que no es un gran problema encontrar un administrador de Linux de alto nivel.


Hay muchos permisos de administración . Las empresas que no solo ven el código fuente como una vida, sino que también ven a los empleados como ladrones, establecerán un conjunto completo de control de permisos en el sistema de control de versiones. Si todos tienen permisos de lectura y escritura, será preciso para cada sucursal o incluso para cada directorio. debajo. Debido a que Git está desarrollado para el alojamiento de código fuente de Linux, Git también hereda el espíritu de la comunidad de código abierto y no admite el control de permisos. Sin embargo, debido a que Git admite enlaces, se pueden escribir una serie de scripts en el lado del servidor para controlar los envíos y otras operaciones para lograr el propósito del control de permisos. Gitolite es esta herramienta.
No presentaremos a Gitolite aquí, no desperdicie su limitada vida en la lucha por la autoridad.

Resumen Configurar
un servidor Git es muy simple, generalmente en 10 minutos;
para administrar la clave pública cómodamente, use Gitosis;
para controlar los permisos de forma anormal como SVN, use Gitolite.
Por supuesto, hay una herramienta más poderosa, gitlab. Si está haciendo un desarrollo formal, le sugiero que utilice esta herramienta integrada.

Continuará. Continuar compartiendo más tarde. Los amigos que te gustan pueden coleccionar primero ~

Supongo que te gusta

Origin blog.csdn.net/lingshengxueyuan/article/details/100543850
Recomendado
Clasificación