Outils pour utilisateurs

Outils du site


linux:git (lu 119401 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:git [14-11-2018 22:24]
edmc73 [Les branches]
linux:git [05-12-2023 13:52] (Version actuelle)
edmc73 [Checkout]
Ligne 3: Ligne 3:
 La base de la base, en gros et en français ;) => http://rogerdudler.github.io/git-guide/index.fr.html La base de la base, en gros et en français ;) => http://rogerdudler.github.io/git-guide/index.fr.html
  
-L'essentiel => http://www.moussu.fr/git/ +Un tuto en français qui va bien => https://www.miximum.fr/blog/enfin-comprendre-git/
- +
-Autre tuto en français et très clair => https://www.atlassian.com/fr/git/tutorial/git-basics+
  
 ===== Installation ===== ===== Installation =====
Ligne 115: Ligne 113:
 Ajouter au commit seulement les fichiers suivi Ajouter au commit seulement les fichiers suivi
   git add -u   git add -u
-Enlever un fichier du commit + 
-  git reset -- lefichier+ 
 +**Le git reset** 
 + 
 +Revenir à l'état d'un commit tout en gardant vos modification local en unstage 
 +  git reset <commit> 
 +  git reset <commit> --mixed 
 + 
 + 
 +Revenir à l'état d'un commit tout en gardant vos modification local en stage 
 +  git reset <commit> --soft 
 + 
 +Revenir à l'état d'un commit en supprimant toutes vos modifications en local !! (pas de retour possible !!!) 
 +  git reset <commit> --hard 
 + 
 + 
 +Enlever un fichier du commit ou plutot, désindexer un fichier 
 +  git reset lefichier 
 +équivalent de  
 +  git reset --mixed HEAD lefichier 
 + 
 + 
 Annuler le dernier commit non encore propagé (n'affecte pas le contenu des fichiers, fait comme si vous n'aviez pas fait git commit) Annuler le dernier commit non encore propagé (n'affecte pas le contenu des fichiers, fait comme si vous n'aviez pas fait git commit)
   git reset HEAD^   git reset HEAD^
  
-Ne plus suivre (unstage) un fichier +Annuler votre dernier commit non propagé (supprime vos modifications et le dernier commit).  
-  git reset HEAD nom_du_fichier ou répertoire+  git reset --hard HEAD^ 
 + 
 + 
 +Le **git revert** (pas de perte d'historique) 
 + 
 +Pour annuler un commit en particulier. Crée un nouveau commit 
 +  git revert <commit> 
 + 
 +Pour annuler un commit sur un fichier en particulier 
 +  git revert <commit> <nom du fichier> 
 + 
 +   
 +Plus d'info sur git reset => https://git-scm.com/book/fr/v2/Utilitaires-Git-Reset-d%C3%A9mystifi%C3%A9 
 Supprimer les modifications faite sur un fichier Supprimer les modifications faite sur un fichier
   git checkout -- nom_du_fichier   git checkout -- nom_du_fichier
Ligne 149: Ligne 181:
 Voir les branches Voir les branches
   git branch   git branch
 +
 +=== Création ===
  
 Créer une branche Créer une branche
Ligne 163: Ligne 197:
 Changer de branche Changer de branche
   git checkout nom_dune_branche   git checkout nom_dune_branche
 +
 +Renommer une branche
 +  git branch -m ancien_nom nouveau_nom
  
 Pour pousser votre branche sur le dépôt afin qu'elle soit accessible à tout le monde Pour pousser votre branche sur le dépôt afin qu'elle soit accessible à tout le monde
   git branch --set-upstream nom_dune_branche origin/nom_dune_branche   git branch --set-upstream nom_dune_branche origin/nom_dune_branche
 +
 +
 +=== Modification ===
  
 Pour fusionner votre nouvelle branche sur la branche master, faites vos commit, placez-vous sur la branche master puis fusionner une autre branche sur celle-ci Pour fusionner votre nouvelle branche sur la branche master, faites vos commit, placez-vous sur la branche master puis fusionner une autre branche sur celle-ci
Ligne 175: Ligne 215:
   git merge --no-ff branche_a_fusionner   git merge --no-ff branche_a_fusionner
  
-Pour supprimer la branche qui ne sert plus à rien  et vérifier qu'elle a été mergé 
-  git branch -d nom_branche_qui_sert_plus 
-   
-Pour supprimer une branche qui n'a pas été mergé 
-  git branch -D nom_branche_obsolète 
  
 Pour copier un fichier d'une autre branche sur la branche en cours Pour copier un fichier d'une autre branche sur la branche en cours
Ligne 187: Ligne 222:
     twitter_integration     twitter_integration
   $ git checkout twitter_integration fichier1 fichier2   $ git checkout twitter_integration fichier1 fichier2
 +
 +
 +Si vous avez une branche feature et que vous voulez intégrer les derniers commit de master sur cette branche
 +
 +  $ git checkout feature
 +  $ git pull origin master
 +
 +=== Suppression de branches ===
 +
 +Pour supprimer la branche qui ne sert plus à rien  et vérifier qu'elle a été mergé
 +  git branch -d nom_branche_qui_sert_plus
 +  
 +Pour supprimer une branche qui n'a pas été mergé
 +  git branch -D nom_branche_obsolète
 +
  
  
 Après avoir supprimé votre branch, il est possible qu'en utilisant ''git checkout '' + tab vous voyez encore de vieille branch dans l'autocompletion. Utilisez la commande suivante pour purger ces restes Après avoir supprimé votre branch, il est possible qu'en utilisant ''git checkout '' + tab vous voyez encore de vieille branch dans l'autocompletion. Utilisez la commande suivante pour purger ces restes
   $ git remote prune origin   $ git remote prune origin
 +
 +Pour supprimer la branch sur origin
 +  git push origin --delete nom_branche_qui_sert_plus
 +
  
 === tester un merge === === tester un merge ===
 +
 +  git checkout master
 +  git merge --no-commit --no-ff branche_a_merger
 +
 +Pour voir ce qui a changé
 +  git diff --cached
 +
 +Pour abandonner le merge
 +  git merge --abort
 +
 +
 +Pour valider le merge
 +  git commit
 +
 +== Méthode alternative à l'ancienne ==
 Pour tester votre merge, faite un test sur une branche temporaire Pour tester votre merge, faite un test sur une branche temporaire
  
Ligne 207: Ligne 276:
   git checkout master   git checkout master
   git branch -D temp_merge   git branch -D temp_merge
 +
 +=== appliquer un commit d'une autre branche ===
 +
 +On est sur notre branche v2
 +  git checkout v2
 +
 +On veut appliquer notre commit a2a2a2 sur notre branche master
 +  git checkout master
 +  git cherry-pick a2a2a2
 +
 +Si vous rencontrez des conflits, tout est bien expliqué
 +<code>
 +$ git cherry-pick 19c0c1d
 +error: impossible d'appliquer 19c0c1d... commentaire du commit
 +astuce: après résolution des conflits, marquez les chemins corrigés
 +astuce: avec 'git add <chemins>' ou 'git rm <chemins>'
 +astuce: puis validez le résultat avec 'git commit'
 +
 +$ git status
 +Sur la branche v2
 +Vous êtes actuellement en train de picorer le commit 19c0c1d.
 +  (réglez les conflits puis lancez "git cherry-pick --continue")
 +  (utilisez "git cherry-pick --abort" pour annuler le picorage)
 +
 +Modifications qui seront validées :
 +
 + modifié :         mon-fichier.php
 + modifié :         mon-fichier2.php
 +
 +Chemins non fusionnés :
 +  (utilisez "git add <fichier>..." pour marquer comme résolu)
 +
 + modifié des deux côtés :  mon-fichier-en-conflit.php
 +
 +Fichiers non suivis:
 +  (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
 +
 + mon-fichier-non-suivi.php
 +
 +</code>
  
 ==== Gestion de conflit ==== ==== Gestion de conflit ====
Ligne 276: Ligne 385:
 Supprimer un fichier uniquement de l'index sans le supprimer physiquement Supprimer un fichier uniquement de l'index sans le supprimer physiquement
   git rm --cached fichier   git rm --cached fichier
 +
 +Pour supprimer le fichier de tout l'historique
 +  git filter-branch --index-filter 'git rm --cached (file)' HEAD
  
 Supprimer tous les fichiers pourris de iOS (échapper l'astérisk est important sinon le shell l'interprètera et seul les fichiers de 1er niveau seront supprimés) Supprimer tous les fichiers pourris de iOS (échapper l'astérisk est important sinon le shell l'interprètera et seul les fichiers de 1er niveau seront supprimés)
Ligne 346: Ligne 458:
  
 Si on a fait une modification qu'on ne veut pas commiter, on peut la mettre de côté, faire par exemple un git pull et réappliquer la modif Si on a fait une modification qu'on ne veut pas commiter, on peut la mettre de côté, faire par exemple un git pull et réappliquer la modif
- 
   git stash   git stash
 +
 +
 +Pour mettre en stash uniquement un fichier
 +  git stash push -- path/to/file.txt
  
 pour voir les modifs en stash pour voir les modifs en stash
-  git list+  git stash list
  
 Pour voir quelles sont les fichiers modifiés par un stash Pour voir quelles sont les fichiers modifiés par un stash
Ligne 357: Ligne 472:
   git stash show stash@{0}   git stash show stash@{0}
  
-Pour réappliquer vos modif en stash+Pour appliquer vos modifs stockées dans le stash et les supprimer du stash
   git stash pop   git stash pop
 +
 +Pour appliquer vos modifs stockées dans le stash et les laisser dans le stash
 +  git stash apply
  
 Le reste dans  Le reste dans 
Ligne 791: Ligne 909:
  
 Profitez-en pour limiter l'accès à votre fichier **README.md** Profitez-en pour limiter l'accès à votre fichier **README.md**
 +<code apache>
 +<Files "readme.md">
 +    Order Deny,Allow
 +    Deny from all
 +</Files>
 +</code>
 ===== Faire le ménage dans son historique ===== ===== Faire le ménage dans son historique =====
  
Ligne 928: Ligne 1052:
   * Supports MySQL, PostgreSQL, SQLite3 and TiDB (experimental)   * Supports MySQL, PostgreSQL, SQLite3 and TiDB (experimental)
   * Multi-language support (19 languages)   * Multi-language support (19 languages)
 +
 +==== Alternatives ====
 +
 +  * https://gitea.io : Gitea is a community fork of the popular self-hosted Git service Gogs.
 +  * https://rhodecode.com : Unified Tools for Mercurial, Git and Subversion
 +  * https://kallithea-scm.org : source code management system that supports two leading version control systems, Mercurial and Git
 +  * https://www.slant.co/topics/1440/~best-self-hosted-web-based-git-repository-managers
 ==== Installation ==== ==== Installation ====
  
linux/git.1542230681.txt.gz · Dernière modification: 14-11-2018 22:24 de edmc73