====== Git ====== ===== Mise à jour repo depuis un dépôt distant ===== - **Mettre à jour dépôt local depuis dépôt distant :** git fetch --all (ou nom des branches) - **Mettre à jour workspace depuis dépot local :** git merge all (ou nom des branches) ====Alternatives==== **Mettre à jour workspace directement depuis dépôt distant (méthode brusque) :** git pull ** Méthode douce :** - git fetch --all - git rebase origin/(branche sur laquelle on veut se mettre à niveau) Cumul => gut pull --rebase **Mettre à jour dépôt local et workspace si d'autres commits on été poussé dans le repo distant et que du travail en workspace n'a pas été indexé** - git fetch - git reset HEAD - git stash - git pull origin BRANCH - git stash pop - Résoudre les éventuels conflits **Mettre à jour dépôt local et workspace sur une branche de dev alors que d'autres commits ont été poussé sur la branche master depuis sur le repo distant** - git fetch --all - git stash - git rebase origin/master - git stash pop ** Changer url d'un dépôt distant :** - cd repertoire/du/workspace - git remote remove origin - git remote add origin url/du/depôt/distant - git fetch --all ===== Dépôt local ===== **Mise à jour dépot local après avoir effecuté modifs dans le workspace : ** git add . => indexe toutes les modifs locales dans l'index (modifs de fichier, ajout, déplacement de fichiers, création dossier....) **Mise à jour workspace en placant HEAD au même niveau qu'un tag :** git checkout TAG (par ex v3.1.1) Renommer une branche dans le workspace : git branch -m BRANCH Supprimer du repo local les branches distantes qui n'existent plus : git remote prune origin Supprimer une branche dans le workspace : git branch -d BRANCH **Ajout selectif des modifications** Faire un ''git add -p'' pour choisir les modification qu'on souhaite ajouter au prochain commit. Options possibles pour chaque ajout : Stage this hunk [y,n,a,d,/,j,J,g,e,?]? ? y - stage this hunk n - do not stage this hunk a - stage this and all the remaining hunks in the file d - do not stage this hunk nor any of the remaining hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help Source : https://git-scm.com/book/it/v2/Git-Tools-Interactive-Staging#r_interactive_staging ===== Merge Request ===== => Possibilité d'effectuer merge en cli avant le push PRIVILÉGIER de passer par Gitlab. Aller dans le projet => Merge Request => New Merge request ===== Alias utiles ===== => Historiques des commits (git lg amélioré) lg = 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)' --all ===== Divers ===== * Rejouer un diff à un endroit donné : git cherry-pick ID_COMMIT * Appliquer un diff dans un autre dépôt - Créer un patch dans le dépôt source: git diff --fichier_à_modifier > nomdupatch.patch - Aller dans le dépôt destination - Appliquer le patch : git apply /chemin/depôt/source/nomdupatch.patch * Changer le message du dernier commit : git commit --amend * Ajouter un tag de version : git tag version-tag * Modifier l'ID du dernier commit sans faire de modif : git commit --amend --no-edit * Créer un commit vide (pour déclencher une CI par exemple) : git commit --allow-empty -m "Faux commit" ===== Sources ===== https://wiki.evolix.org/HowtoGit