Controlador de versiones
Git es un sistema de control de versiones utilizado para gestionar el código fuente de proyectos de desarrollo.
Sus principales funciones son:
# Las dos funciones principales de git:
- Combinación de código en colaboración entre múltiples desarrolladores
- Gestión de versiones con capacidad para revertir a versiones anteriores
Software de gestión de versiones
Existan principalmente dos tipos: Git y SVN (un sistema antiguo).
Diferencias clave:
-svn: Sistema Centralizado (CVCS). Si el servidor se ve comprometido o falla irreparablemente, esto afectará la productividad del equipo
-git: Sistema Distribuido (DVCS). En caso de fallo del servidor, puede utilizarse otro cliente como servidor alternativo sin interrumpir el desarrollo
Flujo de trabajo en Git
Uso de Git
Instalación de Git
# 1. Descargar la versión adecuada: https://git-scm.com/download
# 2. Instalar Git:
# Seguir los pasos del instalador
# Al hacer clic derecho en cualquier ubicación, debería aparecer:
- Git Bash Here # Para operar con comandos de terminal
- Git GUI Here # Interfaz gráfica, generalmente no se utiliza
Tres áreas de Git
Área de trabajo, área de staging y repositorio, tal como se muestra:
Área de trabajo Área de staging Repositorio<br></br>
Ubicación de código Código modificado va aquí Historial de versiones
Editar o eliminar código Solo después de ser añadido a staging Debe venir desde staging
Comandos de Git
Inicialización
-Inicializar: git init nombre_carpeta # Gestionar carpeta específica
-Inicializar: git init # Gestionar toda la ruta actual
# Al inicializar un repositorio, dentro de una carpeta que deseas gestionar, se crea una carpeta oculta .git, indicando que esa carpeta está bajo control de Git
Verificar estado del repositorio
# Verificar estado del repositorio
git status
# Texto rojo indica archivos no gestionados
# Texto verde indica archivos agregados al área de staging
De área de trabajo a área de staging
git add archivo.txt # Agregar archivo.txt al área de staging
git add . # Agregar todos los archivos de la ruta actual al área de staging
Configurar información del usuario
Antes de enviar datos al repositorio, es necesario configurar la información del usuario; de lo contrario, no se podrá hacer el envío.
# Configurar información global del usuario
git config --global user.name 'yessir'
git config --global user.email '983410683@qq.com'
# Esta información se guarda en el archivo C:\Users\usuario\.gitconfig y aplica a todos los repositorios
# Configurar información local del usuario -- solo aplica al repositorio actual
git config user.name 'lqz'
git config user.email '2333@qq.com'
# Nota: Dentro de la carpeta .git del repositorio actual, puedes ver esta configuración en el archivo config
De área de staging al repositorio
Es obligatorio tener la información del usuario configurada antes de enviar datos al repositorio.
git commit -m 'comentario: he añadido a' # Enviar todo lo del área de staging al repositorio. Se requiere la información del autor<br></br># Es obligatorio incluir un comentario al hacer commit, de lo contrario no se permite el envío
Ver información de versiones en el repositorio
git log # Mostrar registro de cambios
git reflog # Mostrar registro detallado, más entradas pero menos información por línea
Revertir cambios: (dos métodos)
1. git checkout . (menos usado)
2. git reset --hard número_de_version (más usado)
git reset --hard número_de_version # Restaurar una versión específica del repositorio a la zona de trabajo
Agregar nuevo archivo a la gestión de versiones
Crear b, agregar línea en a
git checkout . # Volver al estado del último commit, a estará vacío, b no será gestionado por Git, por tanto mantendrá su estado original
Ejemplo:
-Agregar línea en a.py
-git status # Archivo a.py en color rojo, no ha sido añadido al área de staging
-git add . # Añadir al área de staging
-git commit -m 'comentario' # Enviar al repositorio
-Eliminar a.py
-git status # Archivo a.py en color rojo
-git add . # Añadir al área de staging
-git commit -m 'comentario' # Enviar al repositorio
# Total de tres commits (crear a, modificar a, eliminar a)
-git log # Ver registro de commits
-git reset --hard b9b7824 # Volver a cierta versión
-git reset --hard 5de4a6b
Ignorar archivos
# Algunos archivos no deben ser gestionados por Git, por eso se define un archivo de exclusión
# Crear un archivo .gitignore en la raíz del proyecto, al mismo nivel que .git. No se debe ignorar este archivo
Contenido del archivo:<br></br># El carácter # es comentario, no tiene efecto
Nombre de archivo o carpeta: ignora archivos o carpetas con ese nombre en cualquier directorio
/Ruta/archivo: ignora solo en la raíz del repositorio
Ejemplos:
a.txt: Todos los archivos a.txt en todo el proyecto serán ignorados
/a.txt: Solo el archivo a.txt en la raíz del proyecto será ignorado
/b/a.txt: Solo el archivo a.txt dentro de la carpeta b en la raíz será ignorado
*x*: Cualquier archivo con una x en su nombre será ignorado (* representa cero o más caracteres)
Las carpetas vacías no se suben (no son detectables), pero paquetes sí pueden subirse (si contienen un archivo init vacío)
/dist: Ignorar carpeta dist en la raíz del proyecto
*.py: Ignorar todos los archivos con extensión .py
*.log*: Ignorar archivos cuyo nombre contenga log
Operaciones con ramas en Git
-Ver ramas: git branch # Muestra todas las ramas, las que están activas aparecen en verde
-Crear rama: git branch nombre_rama
-Crear y cambiar: git checkout -b nombre_rama # Puede dividirse en dos pasos
-Eliminar rama: git branch -d nombre_rama # No se puede eliminar la rama actual
-Cambiar de rama: git checkout nombre_rama
-Fusionar ramas: git merge nombre_rama # Fusionar rama dev en master: cambiar a master y ejecutar git merge dev
# Para fusionar rama1 en rama2, debe estar en rama1. Lo opuesto también aplica<br></br>git merge dev # master absorbió dev
Ejemplo:
Crear ramas:
git branch dev
git branch bug
git branch env
Cambiar de rama:
git checkout dev
Eliminar rama:
git branch -d env # No se puede eliminar la rama activa
Fusionar ramas:
git merge bug # dev absorbió bug
Crear y cambiar de rama:
git checkout -b sdiao<br></br><br></br>Cambiar a la rama sdiao<br></br>git checkout sdiao<br></br>En la rama sdiao crear archivo a.txt, luego agregarlo al área de staging y hacer commit<br></br>git add .<br></br>git commit -m 'a.txt añadido en rama sdiao'<br></br>Al cambiar a la rama dev, el archivo a.txt no se verá, igual pasa con otras ramas, solo sdiao lo muestra<br></br>git checkout dev<br></br><br></br>
Eliminar archivos del repositorio remoto
En GitHub, solo se pueden eliminar repositorios completos, no archivos individuales, por lo que se debe usar un comando para solucionarlo.
Primero, abrir la terminal en la carpeta master del proyecto y ejecutar:
$ git pull origin master # Descargar el proyecto del repositorio remoto
$ dir # Ver qué carpetas existen
$ git rm -r --cached carpeta # Eliminar carpeta del seguimiento de Git
$ git commit -m 'Eliminada carpeta' # Confirmar cambio con mensaje