Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
info:libros:git [03/09/2018 02:32] – [trabajando con Git] mate | info:libros:git [27/11/2018 02:01] (actual) – [Git (libro Amazon)] admin | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | = Git (libro Amazon) | + | = git (libro Amazon) |
{{tag> | {{tag> | ||
Línia 88: | Línia 88: | ||
== más usos de Git | == más usos de Git | ||
+ | === organización | ||
+ | no hay reglas de como organizar tu trabajo, aunque si que hay reglas de como **NO** hacerlo... se ha de organizar para que el trabajo de los otros no te distraiga | ||
+ | |||
+ | === qué poner en el directorio principal | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | === estructura habitual con directorio test | ||
+ | * Git tiene una estructura plana (el todo es tratado en un conjunto, al contrario que CVS o Subversion, que podían tratar un directorio como un proyecto independiente) | ||
+ | * Git permite trabajar con [[https:// | ||
+ | * '' | ||
+ | |||
+ | === flujos de trabajo | ||
+ | === ramas | ||
+ | Una rama es un nombre a un commit específico | ||
+ | |||
+ | === ramas ligeras: etiquetas | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | === creando y fusionando ramas | ||
+ | * '' | ||
+ | * al hacerlo, sobreescribe los cambios que no esten pasados a commit. | ||
+ | * si se quieren conservar sin realizar el commit, se pued hacer un '' | ||
+ | * para recuperar, '' | ||
+ | * para establecer un origen por defecto (upstream): '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== fusionando | ||
+ | - '' | ||
+ | - '' | ||
+ | - una vez fusionadas correctamente, | ||
+ | - '' | ||
+ | - '' | ||
+ | * '' | ||
+ | |||
+ | === los misterios del rebase | ||
+ | reescritura de historia (OJO con los push/pull) | ||
+ | |||
+ | === quién hizo qué | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | == Usando Git como los profesionales: | ||
+ | === github pages | ||
+ | * páginas estáticas | ||
+ | * originalmente, | ||
+ | * se puede configurar en **Settings** -> **GitHub pages** -> Automatic Page Generator (deja elegir algunas plantillas). El generador coge el fichero **README.md** y lo parsea a HTML, y genera un domino **usuario.github.io/ | ||
+ | |||
+ | === hooks | ||
+ | ganchos o eventos que se activan cuando se produce alguna acción -> petición REST (debidamente formada) | ||
+ | * **Settings** -> WebHooks & Services -> Configure services | ||
+ | * se activan al hacer un **push** a GitHub | ||
+ | * tipos de servicios: | ||
+ | * integración continua | ||
+ | * mensajería | ||
+ | * entrega continua | ||
+ | * sistemas de trabajo en grupo | ||
+ | * análisis del código | ||
+ | |||
+ | === cliente GitHub (hub) | ||
+ | |||
+ | == Hooks, ejecutando código tras una orden Git | ||
+ | === estructura repositorio | ||
+ | {{ : | ||
+ | |||
+ | * branches : sin uso actualmente | ||
+ | * config, | ||
+ | * el resto de ficheros se copian de una plantilla: | ||
+ | * hooks, description, | ||
+ | * la plantilla está en ''/ | ||
+ | * también se puede usar un directorio alternativo de plantilla con el parámetro **--template** con los comandos **clone** o **init** | ||
+ | * '' | ||
+ | |||
+ | ==== paso a paso | ||
+ | * '' | ||
+ | - crea un SHA1 a partir del contenido y almacena como BLOB el fichero en la zona temporal | ||
+ | - almacena el nombre de fichero (o ficheros contenidos en la zona temporal) en un arbol | ||
+ | - se calcula el SHA1 del arbol y se almacena en **.git/ | ||
+ | - un arbol puede apuntar a otros árboles | ||
+ | - al hacer un commit, se crear un tercer tipo de objeto, que contiene enlaces a un árbol (el de más alto nivel) y metadatos | ||
+ | |||
+ | === refiriéndonos a objetos en git | ||
+ | * se puede usar '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | === comandos de alto y bajo nivel (fontanería y loza) | ||
+ | * fontanería : comandos bajo nivel | ||
+ | * loza: comandos alto nivel (usuario) | ||
+ | |||
+ | ==== las cañerias | ||
+ | * index : contiene a los que GIT ha de prestar atención | ||
+ | * objetos : | ||
+ | * ficheros: el contenido y el nombre almacenado en el árbol -> **blob** | ||
+ | * mensajes de commit -> **commit** | ||
+ | * etiquetas -> **tag** | ||
+ | * árboles -> **tree** | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | == viva la diferencia | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | == los dueños de las tuberías - metadatos | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * uso de estos comandos para unificar el acceso a las mismos en diferentes OS | ||
+ | |||
+ | == rev-parse | ||
+ | * recoge y procesa parámetros | ||
+ | * procesamiento de parámetros | ||
+ | * especificación de objetos | ||
+ | * búsqueda en directorios del repositorio | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | == concepto de hooks | ||
+ | * ejecución progrma (shell, | ||
+ | * automatización de tareas | ||
+ | * directorio propio: **.git/ | ||
+ | * solo se admite 1 hook por evento y tendrá el nombre del evento asociado (uso de symbolic links) | ||
+ | {{ : | ||
+ | |||
+ | === programando un hook básico | ||
+ | * examinar entorno y parámetros de entrada | ||
+ | * hacer cambios en el entorno, los ficheros y la salida | ||
+ | * salir con mensaje de error o ninguno si todo correcto | ||
+ | |||
+ | comprueba si el nombre de usuario está en el mensaje de commit y si no, lo añade | ||
+ | <code bash; title=" | ||
+ | #|/bin/bash | ||
+ | SOB=$(git config github.user) | ||
+ | grep -qs " | ||
+ | </ | ||
+ | |||
+ | añade información al commit: | ||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | #Recuerda hacer | ||
+ | # cp prepare-commit-msg.ejemplo prepare-commit-msg | ||
+ | # chmod +x prepare-commit-msg | ||
+ | |||
+ | STATS=$(git diff --cached --shortstat) | ||
+ | echo ". Cambios en este commit\n | ||
+ | </ | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | |||
+ |