Contenido
- Branches
- Diferencias entre versiones
- Volver en el tiempo en nuestro repo
- Repositorios remotos
- Terminal y linea de comandos
- Comandos básicos en la terminal
- Tipos de archivos
- Sintaxis de redirección
Un sistema de control de versiones como Git nos ayuda a guardar el historial de cambios y crecimiento de los archivos -de texto plano, idealmente - en nuestro proyecto.
$git init | arranca el repositorio
$git add <archivo> | arranca el archivo
$git commit | envía los últimos cambios a la base de datos
$git add . | arranca todos los archivos que hayan cambiado en la carpeta actual
$git status | muestra el estado de los archivos
$git show | muestra todos los cambios históricos realizados
$git log <archivo> | muestra los cambios realizados al archivo
$git push | envía a un repositorio remoto
Branches
Los equipos de desarrollo tienen un estándar:
- Todo lo que esté en la rama master va a producción,
- Las nuevas features, características y experimentos van en una rama “development” (para unirse a master cuando estén definitivamente listas)
- Los issues o errores se solucionan en una rama “hotfix” para unirse a master tan pronto como sea posible.
Crear una nueva rama lo conocemos como Checkout. Unir dos ramas lo conocemos como Merge.
Git config --list : Mi info de identificación
Recuerda que Git está optimizado para trabajar en equipo, por lo tanto, debemos darle un poco de información sobre nosotros. No debemos hacerlo todas las veces que ejecutamos un comando, basta con ejecutar solo una sola vez los siguientes comandos con tu información:
git config --global user.email "tu@email.com"
git config --global user.name "Tu Nombre"
Existen muchas otras configuraciones de Git que puedes encontrar ejecutando el comando git config --list (o solo git config para ver una explicación más detallada).
Diferencias entre versiones
git show <file_name> | Cambios del ultimo commit
git log <file_name> | Historial de cambios
git log --stat | Historial de cantidad de cambios en bytes en los archivos especificos, desde el commit
git diff <older_commit_id> <newer_commit_id> | Compara versiones
git diff | compara el stage contra lo que tienes actualmente
Volver en el tiempo en nuestro repo
El comando git checkout + ID del commit nos permite viajar en el tiempo. Podemos volver a cualquier versión anterior de un archivo específico o incluso del proyecto entero. Esta también es la forma de crear ramas y movernos entre ellas.
También hay una forma de hacerlo un poco más “ruda”: usando el comando git reset. En este caso, no solo “volvemos en el tiempo”, sino que borramos los cambios que hicimos después de este commit.
git reset <commit_id> --hard | Vuelvo al commit, como si nada hubiera pasado.
git reset <commit_id> --soft | Conservando el stage, vuelvo al commit
git reset --soft HEAD^1 | Regresa el Head una posicion (Deshace el ultimo commit) dejando los archivos en stage
git checkout <commit_id> <file_name> | Regresar un archivo a version del commit, dejandolo en stage
git rm --force | Remueve los archivos de Git y del disco duro.
git rm --cached | Remueve los archivos del área de Staging, pero los mantiene en nuestro disco
git restore <file-name> | Devolver archivo de la version actual a la de stage
git reset HEAD | Resetea el stage. Los archivos tendran que git add de nuevo
Repositorios remotos
- git clone url_del_servidor_remoto: Nos permite descargar los archivos de la última versión de la rama principal y todo el historial de cambios en la carpeta .git.
- git push: Luego de hacer git add y git commit debemos ejecutar este comando para mandar los cambios al servidor remoto.
- git fetch: Lo usamos para traer actualizaciones del servidor remoto y guardarlas en nuestro repositorio local (en caso de que hayan, por supuesto).
- git merge: También usamos el comando git fetch con servidores remotos. Lo necesitamos para combinar los últimos cambios del servidor remoto y nuestro directorio de trabajo.
- git pull: Básicamente, git fetch y git merge al mismo tiempo.
Terminal y línea de comandos
Diferencias entre la estructura de archivos de Windows, Mac o Linux.
- La ruta principal en Windows es C:\, en UNIX es solo /.
- Windows no hace diferencia entre mayúsculas y minúsculas pero UNIX sí.
Recuerda que GitBash usa la ruta /c para dirigirse a C:\ (o /d para dirigirse a D:\) en Windows. Por lo tanto, la ruta del usuario con el que estás trabajando es /c/Users/Nombre de tu usuario
Comandos básicos en la terminal
- pwd: muestra la ruta de carpetas en la que te encuentras.
- mkdir: crear carpetas (mkdir Carpeta).
- touch: crear archivos (touch archivo.txt).
- rm: borrar un archivo o carpeta (rm archivo.txt). Cuidado, puedes borrar tu disco duro.
- cat: ver el contenido de un archivo (cat archivo.txt).
- ls: ver los archivos de la carpeta donde estamos.
Argumentos para ver más información (pueden ser -- + el nombre del argumento o - + una sola letra o shortcut por cada argumento).
- ls -a: Mostrar todos los archivos, incluso los ocultos.
- ls -l: Ver todos los archivos como una lista.
- cd: navegar entre carpetas.
- cd /: Ir a la ruta principal
- cd o cd ~: Ir a la ruta de tu usuario
- cd carpeta/subcarpeta: Navegar a una ruta dentro de la carpeta donde estamos ahora mismo.
- cd .. (cd + dos puntos): Regresar una carpeta hacia atrás.- Si quieres referirte al directorio en el que te encuentras ahora mismo puedes usar cd . (cd + un punto).
- history: ver los últimos comandos que ejecutamos y un número especial con el que podemos repetir su ejecución.
- ! + número: ejecutar algún comando con el número que nos muestra el comando history (por ejemplo, !72).
- clear: Para limpiar la terminal. También podemos usar los atajos de teclado Ctrl + L o Command + L.
Todos estos comandos tiene una función de autocompletado, o sea, puedes escribir la primera parte y presionar la tecla Tab para que la terminal nos muestre todas las posibles carpetas o comandos que podemos ejecutar.
Si presionas la tecla Arriba puedes ver el último comando que ejecutamos.
Recuerda que podemos descubrir todos los argumentos de un comando con el argumento --help (cat --help).
Terminal types
sh The original Bourne shell Present on every unix system
ksh Original Korn shell Richer shell programming environment than sh
csh Original C-shell C-like syntax; early versions buggy
tcsh Enhanced C-shell User-friendly and less buggy csh implementation
bash GNU Bourne-again shell Enhanced and free sh implementation
zsh Z shell Enhanced, user-friendly ksh-like shell
Directorios
Root (/), Home (~), Parent (..), Current (.) Previous (-) Directory
Comandos
- Nombre del programa
- Parametros: Informacion para la ejecucion del programa (arguments)
- Modificadores: Alteran el funcionamiento del programa (-flags)
Sintaxis
comando -<flags> <arguments>
* El - indica abreviacion de un modificador
* Puede haber – que indica el modificador como palabra
* Los argumentos no llevan -
Lista de comandos
- date indica la fecha actual
- echo “<mensaje>” muestra un mensaje en la pamtalla
- man <comando> muestra el manual del comando
- history muestra el historial de comandos
Comodines
- <text> + tab + tab muestra todos los comandos que empiezan don text
- <text> + tab autocomplta el comando (si hay solo uno)
- ↑ muestra el comando anterior sucesivamente
- ctrl + shift + r busqueda hacia atras de los camndos escritos
- !<indice> ejecuta el comando <indice> del historial
Comandos de archivos y directorios
- ls : ver directorios y archivos.
- ls -a : muestra todos los archivos
- ls -t : muestra archivos por fecha de modificación
- ls -x : ordena por nombre y luego por extension
- ls -S : ordena los resultados por tamaño
- ls -R : muestra el contenido de todos los subdirectorios
- ls -l : muestra info de usuario, grupo, permisos, tamaño, fecha de creado
- ls -lh : igual que -l pero en kb/mb
- mkdir : Crear un directorio EJ: mkdir “Nombre”
- pwd : Muestra en la ruta en la que te encuentras (Print working dir)
- cd : permite cambiar de diretorio EJ : cd jmmj
- cd … : Retocre en la ruta que se encuentra
- cd ~ : Te lleva al Home
- cd - : ultimo directorio visitado
- cp : Permite copiar un archivo EJ : cp .\archivo.txt .\directorioAcopiar
- rm : PErmite Borrar un archivo EJ rm archivo.txt
- rmdir : Permite eliminar EL direcotrio EJ : rmdir archivo.txt
- mv : Permite mover un archivo a otro directorio EJ : mv .\archivo .\lugarAmover
Tipos de Archivos
- Binarios: Pensado para ser interpretado por una computadora si los abres directamente no son legibles por los humanos
- De texto: Contienen texto legible por humanos (configuraciones, paginas web, codigo fuente)
- Crear o abrir, y editar un archivo : vim/nano nombre_archivo.extension
Utilidades batch(procesamiento por lotes)
Programas que procesan texto y emiten un resultado
- cat →muestra el contenido completo de un archivo
- head →muestra las primeras filas de un archivo
- tail → muestra las ultimas filas de un archivo
- Modificador head/tail -n → muestra las primeras/ultimas n filas (por defecto 10)
- grep XXX YYYY => este comando permite buscar una expresión regular
- grep -i XXX YYYY => este comando permite buscar una expresión sin tomar en cuenta el camel case
- grep -i “XXX$” YYYY => este comando permite buscar una expresión que termine con lo pasado por parámetros
- grep -i “⌃XXX” YYYY => este comando permite buscar una expresión que comience con los siguientes parámetros
- sed <proceso> <archivo> → sed (string editor)Tratamiento de flujo de caracteres. (No guarda cambio).
- ‘s/<expresion1>/<expresion2>’ → sustituye <expresion1> por <expresion2>
- ‘<proceso>/g’ → indica que el proceso lo haga globalmente (por defecto sed solo trabaja con la primer coincidencia)
- ‘$d’ → elimina la ultima linea del archivo
- awk <script> <archivo> → Tratamiento de texto delimitado (comas, espacios, etc)
- -F “<separador>” → indica el separador del archivo ("," “:” " ")
- Usa el lenguaje de bash
- && → and
- $<n> → columna n
Sintaxis de redireccion
- Entrada
<.archivo> < <instrucciones>
(ejecuta las instrucciones en el archivo)
- Salida
<informacion>. > <archivo>
guarda la informacion en el archivo
<informacion>. >> <archivo>
añade la informacion en el archivo
Pipes: Permiten conectar la salida de un proceso con la entrada de otro
Sintaxis
<proceso1> | <proceso2>
Ejecuta el proceso dos una vez el proceso1 haya terminado (con la salida del proceso1)
Nota:
wc → word count (realiza conteos estandar)
-l → cuenta las lineas
-c → cuenta los bytes
-w → cuenta las palabras
l → apuntador a otro directorio
d → directorio
rwx → Permissions for: Read, Write, eXecute/aXess
chmod → change modes (permissions)
o-w (others removed writing permission)
+w (writing permission enabled to all)
777 (all permission enabled to all)
chown → change owner
ch grp → change group of users
sudo → temporal super user permission