Git : Différence entre versions

De Linux Server Wiki
Sauter à la navigation Sauter à la recherche
 
(2 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
[[category:desktop]]
 
[[category:desktop]]
 +
=0=
 
<pre>aptitude install git</pre>
 
<pre>aptitude install git</pre>
  
Ligne 80 : Ligne 81 :
 
=Mettre à jour la liste des branches distantes=
 
=Mettre à jour la liste des branches distantes=
 
<pre>git remote update --prune</pre>
 
<pre>git remote update --prune</pre>
 +
 +
=diff=
 +
==Diff entre plusieurs branches==
 +
Diff entre la branche en cours et master:
 +
<pre>git diff master</pre>
 +
 +
Diff entre deux branches (master et staging ici):
 +
<pre>git diff master..staging</pre>
  
 
=Merge=
 
=Merge=
Ligne 118 : Ligne 127 :
 
=Retrouver le commit qui a supprimé un fichier=
 
=Retrouver le commit qui a supprimé un fichier=
 
<pre>git log --full-history -- FICHIER</pre>
 
<pre>git log --full-history -- FICHIER</pre>
 +
 +
=Utiliser kdiff3 en tant qu'outil de diff/merge=
 +
<pre>
 +
git config --global --add merge.tool kdiff3
 +
git config --global --add mergetool.kdiff3.path "/usr/bin/kdiff3"
 +
git config --global --add mergetool.kdiff3.trustExitCode false
 +
git config --global --add mergetool.prompt false
 +
 +
git config --global --add diff.guitool kdiff3
 +
git config --global --add difftool.kdiff3.path "/usr/bin/kdiff3"
 +
git config --global --add difftool.kdiff3.trustExitCode false
 +
git config --global --add difftool.prompt false
 +
</pre>
 +
 +
Puis utiliser <code>git difftool</code> (plutôt que <code>git diff</code>)

Version actuelle datée du 10 novembre 2019 à 10:23

1 0

aptitude install git
git init script/
cd script/
git add .
git commit

Récupérer les fichiers à l'état HEAD dans la branche courante :

git checkout -- .
ou
git checkout -f
ou encore
git checkout master .

Créer une branche experimental :

$ git branch experimental

Passer a la branche experimental :

git checkout experimental

On peut ensuite modifier des fichiers, et les commit dans la branche experimentale

git commit -a

On peut pousser cette nouvelle branche sur notre repo distant :

git push -u origin experimental

Puis revenir à la branche par défaut avec :

git checkout master

Pour merger les modifications de experimental dans la branche master :

git merge experimental

Puis vous pouvez supprimer la branche experimental :

git branch -d experimental

2 Récupérer le message de commit de manière interactive

A la racine de votre dépot git, créez le fichier .git/plop.sh contenant :

echo "Commit message :"
read plop
echo "$plop" > $1

Modifiez l'éditeur de fichier utilisé par git :

git config core.editor .git/plop.sh

3 Récupérer une branche distante

git branch -a

Les branches marqués "remotes" (en rouge) sont présente uniquement de manière distante. Il faut les récupérer avant de pouvoir y toucher.

La commande suivante permet de créer la branche locale "dev" et de la lier a la branche distante "dev" déjà existante

git checkout -b dev origin/dev

4 Supprimer une branche distante

git push origin --delete BRANCHE

Puis on peut supprimer la version locale de la branche :

git branch -d BRANCHE

5 Mettre à jour la liste des branches distantes

git remote update --prune

6 diff

6.1 Diff entre plusieurs branches

Diff entre la branche en cours et master:

git diff master

Diff entre deux branches (master et staging ici):

git diff master..staging

7 Merge

7.1 dry run

git merge --no-commit --no-ff $BRANCH

Puis

git merge --abort

8 Créer un patch

Patch résumant le dernier commit :

git format-patch -1 HEAD

Que vous pouvez appliquer tout bêtement avec patch :

patch -p1 < lepatch.patch

9 Annuler un commit

9.1 Annuler le précédent commit local

En conservant les fichiers

git reset --soft HEAD^

En supprimant les fichiers

git reset --hard HEAD^

9.2 Annuler le précédent commit public

git revert HEAD

10 Retrouver le commit qui a supprimé un fichier

git log --full-history -- FICHIER

11 Utiliser kdiff3 en tant qu'outil de diff/merge

git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "/usr/bin/kdiff3"
git config --global --add mergetool.kdiff3.trustExitCode false
git config --global --add mergetool.prompt false

git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "/usr/bin/kdiff3"
git config --global --add difftool.kdiff3.trustExitCode false
git config --global --add difftool.prompt false

Puis utiliser git difftool (plutôt que git diff)