Outils du site

La superstition porte malchance. [Raymond Smullyan]

56-tools:git

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édentesRévision précédente
Prochaine révision
Révision précédente
56-tools:git [2019/02/10 11:20] – [Git stash] Roge56-tools:git [2023/12/13 01:08] (Version actuelle) – [Créer un repository bare] Roge
Ligne 65: Ligne 65:
 Avantage : l'origin est déjà préconfigurée dans le .git/config Avantage : l'origin est déjà préconfigurée dans le .git/config
  
 +
 +
 +===== Intialiser le remote à partir du local =====
 +
 +<code bash>
 +# Crée l'origin
 +git init <origin-repository> --bare
 +
 +# dans le dossier local racine
 +git remote add origin <URL>
 +# mise à jour de l'origin
 +git push origin master
 +# Tous les autres utilisateurs peuvent alors se synchroniser avec l'origin
 +git pull
 +</code>
 ===== Configuration ===== ===== Configuration =====
  
Ligne 142: Ligne 157:
  
  
-===== Git checkout =====+===== SOS =====
  
-on peut récupérer la totalité d'un ancien commit :+Afficher la liste des fichiers d'un projet :
  
-''git checkout <commit>''+''git ls-tree %%--%%full-tree -r HEAD'' 
 + 
 +Suppression définitive d'éléments : [[http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-git-repo|http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-git-repo]] 
 + 
 +Récupérer uniquement quelques fichiers : 
 + 
 +''git checkout <commit> '' 
 + 
 +Normalement Git ne supprime pas de commit, donc si on est perdu : 
 + 
 +''git reflog'' affiche la liste des commits. 
 + 
 +On peut alors revenir sur un commit particulier avec : 
 + 
 +''git reset <nowiki>–</nowiki>hard <mon-commit>'' [[https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit|https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit]] 
 + 
 +If you want to get list of changed files: 
 + 
 +''git diff-tree <nowiki>–</nowiki>no-commit-id <nowiki>–</nowiki>name-only -r <commit-hash>'' 
 + 
 +If you want to get list of all files in a commit, you can use 
 + 
 +''git ls-tree <nowiki>–</nowiki>name-only -r <commit-hash>'' 
 +===== Pull - fetch ===== 
 + 
 +La commande **git fetch** va récupérer toutes les données des commits effectués sur la branche courante qui n'existent pas encore dans votre version en local. Ces données seront stockées dans le répertoire de travail local mais ne seront pas fusionnées avec votre branche locale. Si vous souhaitez fusionner ces données pour que votre branche soit à jour, vous devez utiliser ensuite la commande **git merge**. 
 + 
 +La commande **git pull** est en fait la commande qui regroupe les commandes **git fetch** suivie de **git merge**. Cette commande télécharge les données des commits qui n'ont pas encore été récupérées dans votre branche locale puis fusionne ensuite ces données. 
 + 
 + 
 +===== Exemple ===== 
 + 
 +<code> 
 +#--------------------------------------------------------------  
 +# Configuration de Git  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ cat .git/config  
 +[core]  
 +repositoryformatversion = 0 filemode = true bare = false  
 +logallrefupdates = true  
 +[branch "master"]  
 +remote = /bkp/GITs/Test-Git  
 +merge = refs/heads/master  
 +[remote "origin"]  
 +url = /bkp/GITs/Test-Git/  
 +fetch = refs/heads 
 +/*:refs/remotes/origin*/ 
 +push = master fetch = master  
 +#--------------------------------------------------------------  
 +# Création du dossier de travail avec initialisation Git  
 +#--------------------------------------------------------------  
 +hal:/data $ git init Test-Git  
 +Initialized empty Git repository in /media/data/Test-Git/.git/  
 +#--------------------------------------------------------------  
 +# Création du dossier de référence avec initialisation Git --bare  
 +#--------------------------------------------------------------  
 +hal:/data $ cd /bkp/GITs/  
 +hal:/bkp/GITs $ git init Test-Git --bare  
 +Initialized empty Git repository in /media/bkp/GITs/Test-Git/  
 +hal:/bkp/GITs $ cd - /media/data hal:/data  
 +$ cd Test-Git/  
 +hal:/data/Test-Git $ echo "v1" > test.txt  
 +hal:/data/Test-Git $ ll  
 +total 8 drwxr-xr-x 7 roge roge 4096 Nov 9 09:08 .git -rw-r--r-- 1 roge roge 3 Nov 9 09:10 test.txt 
 +#--------------------------------------------------------------  
 +# Status  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git status  
 +On branch master Initial commit  
 +Untracked files: (use "git add < file>..." to include in what will be committed)  
 +test.txt nothing added to commit but untracked files present (use "git add" to track)  
 +#-------------------------------------------------------------- #  
 +Ajout dans Git  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git add *  
 +hal:/data/Test-Git $ git status  
 +On branch master Initial commit Changes to be committed:  
 +(use "git rm --cached < file>..." to unstage) new file: test.txt  
 +#--------------------------------------------------------------  
 +# Commit  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git commit -m "v1"  
 +[master (root-commit) 95defef] v1 1 file changed, 1 insertion( ) create mode 100644 test.txt  
 +# Vérification  
 +hal:/data/Test-Git $ git log  
 +2016-11-09 12:38 (HEAD -> master) dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +#-------------------------------------------------------------- #  
 +Mise à jour du repository de reference  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git push /bkp/GITs/Test-Git/  
 +master Counting objects: 3, done. Writing objects: 100% (3/3), 197 bytes | 0 bytes/s, done. 
 +Total 3 (delta 0), reused 0 (delta 0) To /bkp/GITs/Test-Git/  
 +* [new branch] master -> master  
 +# Vérification  
 +hal:/data/Test-Git $ cd /bkp/GITs/Test-Git/  
 +hal:/bkp/GITs/Test-Git  
 +$ git log  
 +2016-11-09 12:38 (HEAD -> master) dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +#--------------------------------------------------------------  
 +# Modification du fichier et commit  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ echo "v1.1" > test.txt  
 +hal:/data/Test-Git $ git status  
 +On branch master  
 +Changes not staged for commit: (use "git add < file>..."  
 +to update what will be committed) (use "git checkout -- < file>..."  
 +to discard changes in working directory)  
 +modified: test.txt no changes added to commit (use "git add" and/or "git commit -a")  
 +hal:/data/Test-Git $ git add *  
 +hal:/data/Test-Git $ git commit -m "v1.1"  
 +[master dd4b48d] v1.1 1  
 +file changed, 1 insertion( ), 1 deletion(-)  
 +hal:/data/Test-Git $ git push /bkp/GITs/Test-Git/ master  
 +Counting objects: 3, done.  
 +Writing objects: 100% (3/3), 228 bytes | 0 bytes/s, done.  
 +Total 3 (delta 0), reused 0 (delta 0) To /bkp/GITs/Test-Git/  
 +95defef..dd4b48d master -> master  
 +hal:/data/Test-Git $ git log  
 +2016-11-09 12:38 (HEAD -> master) dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +#--------------------------------------------------------------  
 +# 3ième modification du fichier  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ echo "V1.2" > test.txt  
 +hal:/data/Test-Git $ git add *  
 +hal:/data/Test-Git $ git commit -m "V1.2"  
 +[master f9239f9] V1.2 1  
 +file changed, 1 insertion( ), 1 deletion(-)  
 +hal:/data/Test-Git $ git push --set-upstream /bkp/GITs/Test-Git master  
 +Counting objects: 3, done.  
 +Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done.  
 +Total 3 (delta 0), reused 0 (delta 0) To /bkp/GITs/Test-Git dd4b48d..f9239f9  
 +master -> master Branch master set up to track remote branch master from /bkp/GITs/Test-Git.  
 +#--------------------------------------------------------------  
 +# Création d'une branche  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git checkout -b new-feature  
 +master Switched to a new branch 'new-feature'  
 +#--------------------------------------------------------------  
 +# Création de changements  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ echo "V1.3.0" > test.txt  
 +hal:/data/Test-Git $ git add *  
 +hal:/data/Test-Git $ git commit -m "start new feature"  
 +[new-feature f37b89e]  
 +start new feature 1 file changed, 1 insertion( ), 1 deletion(-)  
 +hal:/data/Test-Git $ echo "V1.3.1" > test.txt  
 +hal:/data/Test-Git $ git add *  
 +hal:/data/Test-Git $ git commit -m "End new feature"  
 +[new-feature 06f6e84] End new feature 1 file changed, 1 insertion( ), 1 deletion(-)  
 +hal:/data/Test-Git $ git log  
 +2016-11-09 13:15 (HEAD -> new-feature) 06f6e84 roge End new feature  
 +2016-11-09 13:14 f37b89e roge start new feature  
 +2016-11-09 13:02 (master) 58f89b5 roge V1.2.2  
 +2016-11-09 13:02 71f0700 roge V1.2.1  
 +2016-11-09 12:56 (test-feature) f9239f9 roge V1.2  
 +2016-11-09 12:38 dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +#--------------------------------------------------------------  
 +# Merge: test-feature --> master  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git checkout master Switched to branch 'master'  
 +hal:/data/Test-Git $ git merge new-feature  
 +Updating 58f89b5..06f6e84 Fast-forward test.txt | 2 - 1 file changed, 1 insertion( ), 1 deletion(-)  
 +# Suppression de la branche  
 +hal:/data/Test-Git $ git branch -d new-feature  
 +Deleted branch new-feature (was 06f6e84).  
 +hal:/data/Test-Git $ git log  
 +2016-11-09 13:15 (HEAD -> master) 06f6e84 roge End new feature  
 +2016-11-09 13:14 f37b89e roge start new feature  
 +2016-11-09 13:02 58f89b5 roge V1.2.2  
 +2016-11-09 13:02 71f0700 roge V1.2.1  
 +2016-11-09 12:56 (test-feature) f9239f9 roge V1.2  
 +2016-11-09 12:38 dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +#--------------------------------------------------------------  
 +# Mise à jour du repository de reference  
 +#--------------------------------------------------------------  
 +hal:/data/Test-Git $ git push /bkp/GITs/Test-Git/ master  
 +Counting objects: 12, done.  
 +Delta compression using up to 8 threads.  
 +Compressing objects: 100% (4/4), done.  
 +Writing objects: 100% (12/12), 852 bytes | 0 bytes/s, done.  
 +Total 12 (delta 0), reused 0 (delta 0) To /bkp/GITs/Test-Git/  
 +f9239f9..06f6e84 master -> master  
 +# Vérification  
 +2016-11-09 13:15 (HEAD -> master) 06f6e84 roge End new feature  
 +2016-11-09 13:14 f37b89e roge start new feature  
 +2016-11-09 13:02 58f89b5 roge V1.2.2  
 +2016-11-09 13:02 71f0700 roge V1.2.1  
 +2016-11-09 12:56 f9239f9 roge V1.2  
 +2016-11-09 12:38 dd4b48d roge v1.1  
 +2016-11-09 09:10 95defef roge v1  
 +</code>
  
-ou récupérer uniquement quelques fichiers : 
  
-''git checkout <commit> <file>'' 
 ===== Git tag ===== ===== Git tag =====
  
Ligne 196: Ligne 404:
 On crée un user //git// groupe //git// qui sera propriétaire des projets sur le repository distant. On crée un user //git// groupe //git// qui sera propriétaire des projets sur le repository distant.
  
-<code> +<code bash
-sudo groupadd git  +sudo groupadd git 
-sudo useradd -g git git  +sudo useradd -g git git 
-sudo -i  +sudo -i 
-passwd git +passwd git
 </code> </code>
  
 Dans le fichier //.git/config// des utilisateurs on aura : Dans le fichier //.git/config// des utilisateurs on aura :
  
-<code>+<code bash>
 [remote "origin" [remote "origin"
-url = git@:/anywhere/GITs/.git +url = git@< server>:/anywhere/GITs/< project>.git 
 fetch = +refs/heads/*:refs/remotes/origin/ fetch = +refs/heads/*:refs/remotes/origin/
 push = master fetch = master  push = master fetch = master 
-<code>+</code>
  
-Les 'commiters' devront être dans le groupe //**git**// afin d'avoir les droits de 'push'+Les 'commiters' devront être dans le groupe //**git**//  afin d'avoir les droits de 'push'.
  
-<code> +<code bash
-sudo usermod -a -G //git// //<user>//+sudo usermod -a -G git <user>
 </code> </code>
  
-=====  Git branch =====   
  
-https://www.atlassian.com/git/tutorials/using-branches/git-branch  +===== Git branch ===== 
 + 
 +https://www.atlassian.com/git/tutorials/using-branches/git-branch 
 + 
 + 
 +Liste des branches existantes :
  
-Liste des branches existantes : +''git branch''
  
-''git branch'' +Créer une nouvelle branche :
  
-Créer une nouvelle branche : +''git branch //<new-feature>//''
  
-''git branch //<new-feature>//'' +Utiliser la nouvelle branche :
  
-Utiliser la nouvelle branche : ''git checkout //<new-feature>//'' +''git checkout //<new-feature>//''
  
 Les deux en un (Créer une branche et l'utiliser) :  Les deux en un (Créer une branche et l'utiliser) : 
  
-''git checkout -b //<new-branch>//'' +''git checkout -b //<new-branch>//''
  
-Ajout de modifications :  
  
-''git add ''  +Ajout de modifications :
-''git commit -m "Started work on a new feature"'' +
  
-… plusieurs fois … +''git add <file>''
  
-==== Git Merge ==== +''git commit -m "Started work on a new feature"''
  
-Pour les workflow en "branche" (//Feature Branch Workflow//)Les développers ne travaillent que sur des branchesOn ne merge pas immédiatement les branches sur le master Ce workflow est utilisé pour l'intégration continue+... plusieurs fois ...
  
-Avant de merger :  
  
-''git checkout master'' +==== Git Merge ====
  
-Effectuer le merge de la branche //**new-feature**//  créée précédemment: +Pour les workflow en "branche" (//Feature Branch Workflow//). Les développers ne travaillent que sur des branches. 
 +On ne merge pas immédiatement les branches sur le master
  
-''git merge //<new-feature>//'' +Ce workflow est utilisé pour l'intégration continue.
  
-Correction de conflits éventuels …  
  
-''git add …. git commit …'' +Avant de merger :
  
-Mettre à jour l'origine en sans conserver la branche : +''git checkout master''
  
-''git push origin master''  
  
-Mettre à jour l'origine en y conservant la branche (option: **//-u//** +Effectuer le merge de la branche //**new-feature**// créée précédemment:
  
-''git push **-u** origin master'' +''git merge //<new-feature>//''
  
-A la fin on peut merger la branche sur //origin// :  
  
-'' git checkout master git pull git pull origin __GESHI_OPEN__new-feature> git push '' +Correction de conflits éventuels ...
  
-==== Git Rebase ==== +''git add .... git commit ...''
  
-Pour les workflows "centralisés" 
  
-Garantir que le //master// de l'//origin// est toujours à jour et cohérent. +Mettre à jour l'origine en sans conserver la branche :
  
-Les développements se font dans des branches dédiées en local et que c'est OK on envoi sur le //master// de l'//origin//. +''git push  origin master''
  
-Avant de merger +Mettre à jour l'origine en y conservant la branche (option: **//-u//**) :
  
-''git pull <nowiki>–</nowiki>rebase origin master'' +''git push **-u** origin master''
  
-Les conflits éventuels sont signalés.  
  
-''git status'' +A la fin on peut merger la branche sur //origin// :
  
-Après correction de conflits : +<code bash> 
 +git checkout master 
 +git pull 
 +git pull origin <new-feature> 
 +git push 
 +</code>
  
-''git rebase <nowiki>–</nowiki>continue'' +==== Git Rebase ====
  
-Si on veut arreter "rebase" en cours : +Pour les workflows "centralisés". Garantir que le //master// de l'//origin// est toujours à jour et cohérent. Les développements se font dans des branches dédiées en local et que c'est OK on envoi sur le //master// de l'//origin//.
  
-''git rebase <nowiki>–</nowiki>abort'' +Avant de merger :
  
-Mettre à jour l'origine: +''git pull %%--%%rebase origin master''
  
-''git push origin master''  +Les conflits éventuels sont signalés.
  
-===== Git stash ===== +''git status''
  
-git stash permet de mettre de coté un état **local** (sorte de commit local uniquement). +Après correction de conflits :
  
 +''git rebase %%--%%continue''
  
-<code> +Si on veut arreter "rebase" en cours :
-hal:/data/test2 $ echo Test stash… +
- > test.txt hal:/data/test2  +
-$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use git push to publish your local commits)  +
-Changes not staged for commit: (use git add  +
->…to update what will be committed) (use > git checkout – > +
-… to discard changes in working directory) modified: test.txt no changes added to commit (use > git add and/or > git commit -a) hal:/data/test2 +
  
-$ git stash Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 ..  +''git rebase %%--%%abort''
-HEAD is now at a4fcdc4 Bla bla ..2  +
-.. hal:/data/test2 $ git status On branch master Your branch is ahead of 'origin/masterby 2 commits. ( +
-use git push to publish your local commits) nothing to commit, working directory clean  +
-</code> +
  
-Pour récupérer le contenu du "//stash//" 
  
-'' hal:/data/test2 $ git stash pop On branch master Your branch is ahead of 'origin/master' by 2 commits. (use __GESHI_QUOT__git push__GESHI_QUOT__ to publish your local commits) Changes not staged for commit: (use __GESHI_QUOT__git add __GESHI_OPEN__file>…__GESHI_QUOT__ to update what will be committed) (use __GESHI_QUOT__git checkout – __GESHI_OPEN__file>…__GESHI_QUOT__ to discard changes in working directory) modified: test.txt no changes added to commit (use __GESHI_QUOT__git add__GESHI_QUOT__ and/or __GESHI_QUOT__git commit -a__GESHI_QUOT__) Dropped refs/stash@{0} (97b2a8477f7eac602cec04d3191cac3b2b247bdb) '' +Mettre à jour l'origine:
  
-On peut aussi empliler les stash : +''git push origin master''
  
-'' hal:/data/test2 $ echo __GESHI_QUOT__Test stash 2…__GESHI_QUOT__ > test.txt hal:/data/test2 $ git stash Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 .. HEAD is now at a4fcdc4 Bla bla ..2 .. hal:/data/test2 $ echo __GESHI_QUOT__Test stash 3…__GESHI_QUOT__ > test.txt hal:/data/test2 $ git stash Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 .. HEAD is now at a4fcdc4 Bla bla ..2 .. hal:/data/test2 $ git stash list stash@{0}: WIP on master: a4fcdc4 Bla bla ..2 .. stash@{1}: WIP on master: a4fcdc4 Bla bla ..2 .. hal:/data/test2 $ # A la fin on peut supprimer les stashs : hal:/data/test2 $ git stash drop stash@{1} Dropped stash@{1} (18d40066b10557b8551ac28b7f96c2d1ceb8b23d) hal:/data/test2 $ git stash drop stash@{0} Dropped stash@{0} (9d7208791ae7de2a2af1ba0a79532008ac128786) '' +===== Git stash =====
  
-===== SOS ===== +git stash permet de mettre de coté un état **local** (sorte de commit local uniquement).
  
-Afficher la liste des fichiers d'un projet +<code bash> 
 +hal:/data/test2 $ echo "Test stash..." > test.txt 
  
-''git ls-tree <nowiki>–</nowiki>full-tree -r HEAD'' +hal:/data/test2 $ git status 
 +On branch master 
 +Your branch is ahead of 'origin/masterby 2 commits. 
 +  (use "git push" to publish your local commits) 
 +Changes not staged for commit: 
 +  (use "git add <file>..." to update what will be committed) 
 +  (use "git checkout -- <file>..." to discard changes in working directory)
  
-Suppression définitive d'éléments [[http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-git-repo|http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-git-repo]] + modified  test.txt
  
-Récupérer uniquement quelques fichiers : +no changes added to commit (use "git add" and/or "git commit -a")
  
-''git checkout <commit> '' +hal:/data/test2 $ git stash 
 +Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 .. 
 +HEAD is now at a4fcdc4 Bla bla ..2 ..
  
-Normalement Git ne supprime pas de commit, donc si on est perdu : +hal:/data/test2 $ git status 
 +On branch master 
 +Your branch is ahead of 'origin/master' by 2 commits. 
 +  (use "git push" to publish your local commits) 
 +nothing to commit, working directory clean 
 +</code>
  
-''git reflog'' affiche la liste des commits. +Pour récupérer le contenu du "//stash//" :
  
-On peut alors revenir sur un commit particulier avec +<code bash> 
 +hal:/data/test2 $ git stash pop 
 +On branch master 
 +Your branch is ahead of 'origin/master' by 2 commits. 
 +  (use "git push" to publish your local commits) 
 +Changes not staged for commit: 
 +  (use "git add <file>..." to update what will be committed) 
 +  (use "git checkout -- <file>..." to discard changes in working directory)
  
-''git reset <nowiki>–</nowiki>hard <mon-commit>'' [[https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit|https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit]] + modified  test.txt
  
-If you want to get list of changed files: +no changes added to commit (use "git add" and/or "git commit -a") 
 +Dropped refs/stash@{0} (97b2a8477f7eac602cec04d3191cac3b2b247bdb)
  
-''git diff-tree <nowiki></nowiki>no-commit-id <nowiki>–</nowiki>name-only -r <commit-hash>''+</code>
  
- If you want to get list of all files in a commit, you can use +On peut aussi empliler les stash :
  
-''git ls-tree <nowiki></nowiki>name-only -r <commit-hash>''+<code bash> 
 +hal:/data/test2 $ echo "Test stash 2..." > test.txt  
 +hal:/data/test2 $ git stash  
 +Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 .. 
 +HEAD is now at a4fcdc4 Bla bla ..2 .. 
 + 
 +hal:/data/test2 $ echo "Test stash 3..." > test.txt  
 +hal:/data/test2 $ git stash  
 +Saved working directory and index state WIP on master: a4fcdc4 Bla bla ..2 .. 
 +HEAD is now at a4fcdc4 Bla bla ..2 .. 
 + 
 +hal:/data/test2 $ git stash list 
 +stash@{0}: WIP on master: a4fcdc4 Bla bla ..2 .. 
 +stash@{1}: WIP on master: a4fcdc4 Bla bla ..2 .. 
 +hal:/data/test2 $  
 + 
 +# A la fin on peut supprimer les stashs : 
 + 
 +hal:/data/test2 $ git stash drop stash@{1} 
 +Dropped stash@{1} (18d40066b10557b8551ac28b7f96c2d1ceb8b23d) 
 +hal:/data/test2 $ git stash drop stash@{0} 
 +Dropped stash@{0} (9d7208791ae7de2a2af1ba0a79532008ac128786) 
 + 
 +</code> 
 + 
 + 
 +===== SOS ===== 
 + 
 +Afficher la liste des fichiers d'un projet : 
 + 
 +''git ls-tree %%--%%full-tree -r HEAD'' 
 + 
 +Suppression définitive d'éléments : 
 + 
 +http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-git-repo 
 + 
 + 
 +Récupérer uniquement quelques fichiers : 
 + 
 +''git checkout <commit> <file>'' 
 + 
 + 
 +Normalement Git ne supprime pas de commit, donc si on est perdu : 
 + 
 +''git reflog'' affiche la liste des commits. 
 + 
 +On peut alors revenir sur un commit particulier avec : 
 + 
 +''git reset %%--%%hard <mon-commit>'' 
 + 
 +https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit 
 + 
 +If you want to get list of changed files: 
 + 
 +''git diff-tree %%--%%no-commit-id %%--%%name-only -r <commit-hash>''
  
 +If you want to get list of all files in a commit, you can use
  
 +''git ls-tree %%--%%name-only -r <commit-hash>''
 ===== Exemple ===== ===== Exemple =====
  
Dernière modification : 2019/02/10 11:20