Git

De Linux Server Wiki
Sauter à la navigation Sauter à la recherche

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)