<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Tutorial Git <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Objectius L'objectiu d'aquest exercici és entendre els conceptes bàsics per treballar en Git, així com crear el nostre primer repositori i configurar l'accés i autentificació. ## Instal·lació de Git Per poder utilitzar Git, primer, cal instal·larlo. ### Windows El podeu descarregar de la pàgina oficial: https://git-scm.com/ Una vegada instal·lat, podeu utilitzar l'eina __Git Bash__ per realitzar el tutorial (funciona igual que una terminal Linux). ### Ubuntu (Debian) El podeu descarregar i instal·lar mitjançant `apt`. ```bash sudo apt update sudo apt install git ``` Una vegada instal·lat, l'ordre `git` hauria d'estar disponible. ## GitHub [GitHub](https://github.com/) és un servei de hosting de repositoris Git, el qual ofereix tota la funcionalitat de Git de control de revisió distribuït i administració de codi de la font (SCM) així com afegint les seves característiques pròpies. A diferència de Git, el qual és estrictament una eina de línia d'ordres, GitHub proporciona una interfície gràfica basada en web i escriptori així com integració del mòbil. ### Usuari Abans que res, cal crear (si no en teniu ja) un usuari a la plataforma GitHub. - Realitza la tasca __Usuari de GitHub__ i indica el teu usuari. ### Tutorial GitHub Aquest exercici consiteix en relitzar el tutorial de GitHub, que podeu trobar: - __Versió original (en anglés):__ https://github.com/joapuiib/git_training - __Versió traduïda (en valencià):__ https://github.com/joapuiib/git_training/tree/master/translations/ca Vos recomane que treballeu amb la versió en anglés. Per poder treballar des del vostre usuari, cal que realitzeu un __fork__ en el vostre compte. - [Com fer un fork a GitHub](https://docs.github.com/es/get-started/quickstart/fork-a-repo) ![](/itb/DAM-ED/UD2/img/fork.png) ```warning En la captura s'utilitza l'organització <strong>fpmislata-dam1s-ed</strong> com a propietari per fer l'exemple. En el vostre cas, cal que seleccioneu el voster usuari. ``` Abans de fer el tutorial, cal configurar l'autentificació d'alguna de les maneres que s'exposen a continuació. Vos recomane utilitzar el mètode SSH, que és més díficil de configurar, però més segur i funciona perfectament en el centre. ### Autentificació GitHub Per poder _clonar_ repositoris privats o per poder realitzar canvis (_push_) en qualsevol repositori, heu de autentificar-vos. Des del 13 d'Agost de 2021, GitHub ha eliminat la possiblitat de identificar-se mitjançant usuari i contrasenya. Vegeu [Support for password authentication was removed. Please use a personal access token instead.](https://stackoverflow.com/questions/68775869/message-support-for-password-authentication-was-removed-please-use-a-personal) Per tant, podem utilitzar dos mecanismes per identificar-nos. #### SSH __Documentació oficial__: [Conectar a GitHub con SSH](https://docs.github.com/es/authentication/connecting-to-github-with-ssh) ##### Generar claus SSH En __Linux__ o __Mac OS__, hem d'utilitzar l'eina `ssh-keygen` que podeu executar en la línia de comandes del sistema. ```bash $ ssh-keygen -t rsa -b 4096 ``` Vos demanarà introduir un nom personalitzat o utilitzar una contrasenya per desbloquejar aquesta clau. Totes aquestes opcions són configurables i no són obligatories. En l'example, crearem una clau anomenada __ssh_ed__, sense contrasenya. ![](/itb/DAM-ED/UD2/img/ssh-keygen.png) Les claus per defecte es generen en el directori __.ssh__. En el cas que es vuiga personalitzar el nom de la clau, cal introduir la ruta on es vol guardar. En l'exemple, s'han creat des de dins del directori __.ssh__ perquè es generen dins d'aquest. Veureu que s'han generat dos fitxers: - __dam1s_ed__: Clau privada, aquest fitxer no s'ha de compartir amb ningú ja que és el que s'utilitza per identificar-se. - __dam1s_ed.pub__: Clau pública, que s'utilitza amb la clau privada per realitzar la autenticació. Aquesta clau s'ha de proporcionar als equips/serveis on et vols autenticar (en aquest cas a GitHub). En canvi a __Windows__, podeu generar la clau mitjançant __Git GUI__. Cal accedir a __Help > Show SSH Key__, que ens obrirà una finestra on podem generar una clau. Una vegada generada la clau, ens mostrarà el contingut de la __clau pública__ que s'utilitzarà en el següent apartat. ![](/itb/DAM-ED/UD2/img/ssh_git_gui.png) ##### Introduir clau SSH a GitHub Per configutar una clau SSH a Github cal anar a __Settings => SSH and GPG keys => New SSH key__. En aquesta pàgina, cal indicar un nom, el tipus (Authentication Key) i introduir el contingut de la __clau pública generada__. ![](/itb/DAM-ED/UD2/img/sshkey_github.png) Una vegada configurada la clau, podem clonar repositoris mitjançant SSH. Fixeu-vos amb que la URL no segueix el mateix format que amb el protocol HTTPS. ![](/itb/DAM-ED/UD2/img/ssh_clone.png) #### Personal Acces Token (PAT) La primera resposta de [Support for password authentication was removed. Please use a personal access token instead.](https://stackoverflow.com/questions/68775869/message-support-for-password-authentication-was-removed-please-use-a-personal) explica molt bé com podeu crear un PAT i com configurar-lo en el vostre sistema. Per crear un PAT heu d'anar a __Settings => Developer Settings => Personal Access Token => Generate New Token (Give your password)__. En aquesta pàgina, plenar el formulari (cal seleccionar les opcions _repo_) i donar-li a __Generar token__. > IMPORTANT! Cal copiar-se aquest token, ja que si tanqueu la pàgina no el podreu tornar a veure. Per clonar repositoris privats o fer canvis en el repositori remot (_push_), podeu identificar-se de dues maneres: ##### Token a la URL Si cloneu el repositori utilitzant el token, no us demanarà identificar-vos en cap moment. Aquest mètode és el més còmode, però no és segur, ja que la PTA es queda guardada en el fitxer `.git/config` i en la història de la shell. La sintaxi de l'ordre és ```bash $ git clone https://<token>@github.com/<user>/<repo>.git # Exemple $ git clone https://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@github.com/fpmislata-dam1s-ed/git_traning.git ``` > En l'exemple utilitze l'organització fpmislata-dam1s-ed com a propietari per fer l'exemple. En el vostre cas, cal que introduiu el voster usuari. ![](/itb/DAM-ED/UD2/img/clone_pat.png) ##### Token com a contrasenya L'altra opció és utiitzar el PAT com si fora la contrasenya. ```bash $ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY > Cloning into `YOUR-REPOSITORY`... Username: <type your username> Password: <type your password or personal access token (GitHub) ```