Git

Commandes

$ git checkout -b nouvelle_branche # créee une nouvelle branche à partir de la branche actuelle

$ git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name> # Renommer une branche distante

$ git revert HEAD~3..HEAD # Créée 3 commits annulant les modifications des 3 derniers commits

$ git branch -d branche_a_supprimer # suppression branche en local
$ git push origin :branche_a_supprimer # suppression tag à distance
$ git push origin --delete branche_a_supprimer # suppression tag à distance (alternative)

$ git tag -d tag_a_supprimer # suppression tag en local
$ git push origin :tag_a_supprimer # suppression tag à distance
$ git push origin --delete tag_a_supprimer # suppression tag à distance (alternative)

Submodules

# Déclarer le sous-module et le récupérer
$ git submodule add <url_depot> <submodule_path>
$ git submodule init
$ git submodule update

# Récupération des upgrades
$ cd <submodule_path>
$ git checkout master
$ git pull

# Pousser les modifications faites sur le submodule
$ cd ..
$ git commit -am "bon message de commit"

# Récupération upgrade pour chaque submodule
$ git submodule foreach git pull origin master

# Suppression submodule
$ rm -rf <the_submodule>
$ git rm <the_submodule>

Un bon commit

Création d’un repository

# Sur le serveur
$ cd <repository_path>
$ mkdir monProjet.git
$ cd monProjet.git
$ git --bare init
$ git update-server-info
$ cd ..
$ chown -R <user>: monProjet.git

# Sur le client - clone du depot vide

$ git clone ssh://<user>@<serveur>/<repository_path>/monProjet.git

# Sur le client - à partir d'un repertoire avec des fichiers

$ mkdir monProjet
$ cd monProjet
$ git init
$ git remote add origin ssh://<user>@<serveur>/<repository_path>/monProjet.git

Configuration usuelle

# difftool
$ git config --global diff.tool vimdiff
$ git config --global difftool.prompt true

# mergetool
$ git config --global merge.tool vimdiff
$ git config --global merge.conflictstyle diff3
$ git config --global mergetool.prompt true

Sites de référence