📌
Masternote. Esto es un espacio de fragmentos, recursos y respuestas a un tema en particular que consulto o comparto frecuentemente.

Contenido

  1. Branches
  2. Diferencias entre versiones
  3. Volver en el tiempo en nuestro repo
  4. Repositorios remotos
  5. Terminal y linea de comandos
  6. Comandos básicos en la terminal
  7. Tipos de archivos
  8. 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

Cheatsheet Github education


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>

NOTA
* 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