Git
histoire de Git
Comme de nombreuses choses extraordinaires de la vie, Git est né avec une dose de destruction créative et de controverse houleuse. Le noyau Linux est un projet libre de grande envergure. Pour la plus grande partie de sa vie (1991–2002), les modifications étaient transmises sous forme de patchs et d'archives de fichiers. En 2002, le projet du noyau Linux commença à utiliser un DVCS propriétaire appelé BitKeeper.
En 2005, les relations entre la communauté développant le noyau Linux et la société en charge du développement de BitKeeper furent rompues, et le statut de gratuité de l'outil fut révoqué. Cela poussa la communauté du développement de Linux (et plus particulièrement Linus Torvalds, le créateur de Linux) à développer son propre outil en se basant sur les leçons apprises lors de l'utilisation de BitKeeper.
Certains des objectifs du nouveau système étaient les suivants :
- vitesse ;
- conception simple ;
- support pour les développements non linéaires (milliers de branches parallèles) ;
- complètement distribué ;
- capacité à gérer efficacement des projets d'envergure tels que le noyau Linux (vitesse et compacité des données).
Depuis sa naissance en 2005, Git a évolué et mûri pour être facile à utiliser tout en conservant ses qualités initiales. Il est incroyablement rapide, il est très efficace pour de grands projets et il a un incroyable système de branches pour des développements non linéaires
Paramétrage Git
Première utilisation de Git
Git contient un outil appelé git config pour nous permettre de voir et modifier les variables de configuration qui contrôlent tous les aspects de l'apparence et du comportement de Git. Ces variables peuvent être stockées dans trois endroits différents :
- Fichier /etc/gitconfig : Contient les valeurs pour tous les utilisateurs et tous les dépôts du système. Si vous passez l'option –system à git config, il lit et écrit ce fichier spécifiquement.
- Fichier ~/.gitconfig : Spécifique à votre utilisateur. Vous pouvez forcer Git à lire et écrire ce fichier en passant l'option –global.
- Fichier config dans le répertoire Git (c'est-à-dire .git/config) du dépôt en cours d'utilisation : spécifique au seul dépôt en cours. Chaque niveau surcharge le niveau précédent, donc les valeurs dans .git/config surchargent celles de /etc/gitconfig.
Notre identité
La première chose à faire après l'installation de Git est de renseigner votre nom et votre adresse e-mail. C'est une information importante car toutes les validations dans Git utilisent cette information et elle est indélébile dans toutes les validations que vous pourrez réaliser :
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
Configurez les couleurs
Activer les couleurs afin d’améliorer la lisibilité des différentes branches.
Pour cela, passez ces trois lignes dans votre shell :
$ git config --global color.diff auto $ git config --global color.status auto $ git config --global color.branch auto
Notre éditeur de texte
Par défaut, Git utilise l'éditeur configuré au niveau système, qui est généralement Vi ou Vim. Si vous souhaitez utiliser un éditeur de texte différent, comme Emacs, vous pouvez entrer ce qui suit :
$ git config --global core.editor emacs
Outil de différences
Une autre option utile est le paramétrage de l'outil de différences à utiliser pour la résolution des conflits de fusion. Supposons que vous souhaitiez utiliser vimdiff :
$ git config --global merge.tool vimdiff
Git accepte kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, et opendiff comme outils valides de fusion.
Git cache HTTPS
On fait en sorte que Git enregistre le nom d'utilisateur et le mot de passe et il ne les demandera jamais.
# git config --global credential.helper store
Nous pouvons également définir un délai avec le paramètre ci-dessus.
# git config --global credential.helper 'cache --timeout=600'
Vérifier vos paramètres
Si vous souhaitez vérifier vos réglages, vous pouvez utiliser la commande git config –list pour lister tous les réglages que Git a pu trouver jusqu'ici :
$ git config --list user.name=John Doe user.email=johndoe@example.com color.status=auto color.branch=auto color.interactive=auto color.diff=auto color.editor=vim merge.tool=vimdiff ...
Création d'un dépôt
Pour initialiser le nouveau dépôt, vous n'avez qu'à vous positionner dans le répertoire du projet et saisir la commande “git init”.
Cela crée un nouveau sous-répertoire nommé “.git” qui contient tous les fichiers nécessaires au dépôt.
cd ~/projects/myprojetc git init
Cloner un dépôt
Si vous souhaitez obtenir une copie d'un dépôt Git existant — par exemple, un projet auquel vous aimeriez contribuer — la commande dont vous avez besoin s'appelle “git clone”.
git clone ~/existing/repo ~/new/repo git clone you@hostname.org:dir/project.git
Affichage
Liste les nouveaux fichiers ou les fichiers modifiés qui ne sont pas encore validés
$ git status
Affiche les changements dans le répertoire de travail qui ne sont pas encore assemblés pour le prochain commit
$ git diff
Affiche la différence entre l'index et votre dernier commit; ce que vous committerez si vous lancez “git commit” sans l'option “-a”
$ git diff --cached
Limitera la sortie aux noms de fichier qui ont changés, accompagné d'un petit graphe décrivant le nombre de lignes différentes dans chaque fichier.
$ git diff --stat
Affiche les changements de votre le répertoire de travail depuis votre dernier commit; ces changements seront committés si vous lancez “git commit -a”
$ git diff HEAD
Affiche les changements entre deux commitid
$ git diff [commit1] [commit2]
Lister les dates de modification et les auteurs pour un fichier
$ git blame [file]
Affiche les changements de fichier pour un commitid et / ou un fichier
$ git show [commit]:[file]
Affiche l'historique complet des modifications
$ git log
Afficher l'historique des modifications pour un fichier/répertoire, y compris les différences
$ git log -p [file/directory]
Historique des changements avec fichiers
$ git whatchanged
Branche
Liste toutes les branches locales
$ git branch
Liste toutes les branches, locales et distantes
$ git branch -av
Bascule sur la branche “my_branch” et mets à jour l'espace de travail
$ git checkout my_branch
Création d'une branche appelée “new_branch”
$ git branch new_branch
Suppression de la branche appelée “my_branch”
$ git branch -d my_branch
Fusionner la branche “branch_a” dans la branche “branch_b”
$ git checkout branch_b $ git merge branch_a
Marque le commit actuel
$ git tag my_tag
Synchronisation
$ git fetch
Publication
git push origin <branch>