<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Resum comandes de 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} ## Introducció En aquest material es recopila un resum dels fitxers, comandes i opcions més utilitzats de Git. ## Fitxers - `~/.gitconfig`: Fitxer de configuració global del teu usuari. S'emmagatzema en la carpeta d'usuari. Totes les configuracions fetes amb `git config --global` s'emmagatzemen en aquest fitxer. També permet definir __alies__. Exemple de `.gitconfig` amb alies que permeten consultar el `log` d'una manera més visual. ```ini [user] name = <Your Name> email = <your email> [alias] lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' lg = !"git lg1" lga = !"git lg --all" ``` - `.git/`: Directori que conté el _Repostori Local_. Aquest carpeta està present en tots els repositoris de Git. - `.gitignore`: Fitxer que especifica quins fitxers no volem que Git considere, és a dir, que Git ha d'ignorar. ## Comandes bàsiques - `git init`: Inicialitza un repositori buit en la carpeta on estigues situat. - `git clone <url> <destination>`: Clona un repositori remot, especificat per una `url` al directori `destination`. Si no s'especifica cap directori, es clonarà en un directori nou amb el nom del repositori. - `git status`: Mostra l'estat actual del repositori, com els canvis en el _Directori de treball_ o el _Staging Area_. - `git add <files or directory>`: Afegeix els fitxers o directoris especificats al _Staging Area_. - `git commit`: Crea un _commit_ que fa efectius els canvis del _Staging Area_. Per defecte, obri un editor per especificar el missatge del _commit_. - Opció `-m <missatge>`: Permet especificar un missatge en una línia d'una manera ràpida, sense necessitat d'un editor de text. - `git restore <files or directory>`: Descarta els canvis dels fitxers o directoris especificats del _Directori de Treball_. __Una vegada descartats NO es poden tornar a recuperar__. - `git restore --staged <files or directory>`: Descarta els canvis dels fitxers o directoris especificats del _Staging Area_ i els torna al _Directori de Treball_. - `git log`: Permet consultar els commits realitzats en la branca actual. - `git diff <files or directory>`: Permet mostrar els canvis realitzats en el _Direcotri de Treball_. Es permet especificar el fitxer o directori dels qual es vol consultar els canvis. Si no s'especifica, es mostren tots els canvis. - Opció `--staged`: Permet mostrar els canvis realitzats en el _Staging Area_. - `git diff <ref>`: Permet mostrar els canvis en una referència, com un _commit_ o una _etiqueta_. ## Sincronització amb el _Repositori Remot_ - `git push`: Publica i sincronitza els canvis realitzas en el _Repositori Local_ al _Repositori Remot_. - Opció `--tags`: Publica totes les etiquetes al _Repositori Remot_. - `git pull`: Incorpora i actualitza els canvis del _Repositori Remot_ al _Repositori Local_. Aquesta comanda pot donar lloc a conflictes. - `git fetch`: Obté els canvis del _Repositori Remot_ al _Repositori Local_, però no actualitza els fitxers. ## Treballar en branques ### Branques locals - `git branch`: Mostra les branques existents al repositori. - `git branch <branch name>`: Crea una branca nova amb el nom especificat. - `git branch -d <branch name>`: Elimina la branca amb el nom especificat. ::: info En aquest context, `checkout` i `switch` són equivalents. ::: - `git checkout <ref>`: Mou el `HEAD` (estat actual del repositori) a la referència especificada. La referència pot ser una branca, una etiqueta o un _commit hash_. - `git checkout -b <branch name>`: Crea una branca nova amb el nom especificat i mou el `HEAD` a aquesta branca. - `git switch -c <branch name>`: Crea una branca nova amb el nom especificat i mou el `HEAD` a aquesta branca. ### Branques remotes - `git push {-u | --set-upstream} <remote> <branch_name>`: Publica la branca actual i estableix el nom de la branca remota. - `git push -d <remote> <branch_name>`: Elimina la branca remota amb el nom especificat. ## Fusionar branques - `git merge <branch name>`: Fusiona i incorpora els canvis de la branca especificada a la branca actual (on està situal el `HEAD`). - Si la fusió és _fast forward_, es produirà sense necessitat de cap acció més. - Si la fusió no és _fast forward_, caldrà especificar el missatge del _merge commit_. - Si hi ha conflictes, caldrà resoldre'ls. - Opció `--abort`: Aborta la fusió que s'està produint. - `git rebase <branch name>`: Mou la base de la branca actual (`HEAD`) a la branca especificada. - Si hi ha conflictes, caldrà resoldre'ls. - Opció `--continue`: Continua amb el canvi de base una vegada s'hagen resolt els conflictes. - Opció `--abort`: Aborta el canvi de base que s'està produint. ## Etiquetes - `git tag`: Mostra les etiquetes existent al repositori. - `git tag <tag name>`: Crea una etiqueta _lleugera_ nova amb el nom especificat. - `git tag -a <tag name>`: Crea una etiqueta _anotada_ nova amb el nom especificat. Cal indicar un missatge. - Opció `-m`: Permet especificar un missatge en una línia d'una manera ràpida, sense necessitat d'un editor de text. - `git tag -d <tag name>`: Elimina l'etiqueta amb el nom especificat.