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 :
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
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 :
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
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
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
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.
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'
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 ...
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
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
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
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
$ git fetch
git push origin <branch>