----- isHidden: false menupriority: 2 kind: article created_at: 2009-11-12T11:39:54+02:00 title: Git pour les nuls author_name: Yann Esposito author_uri: yannesposito.com subtitle: Avant l'utilisation, la configuration ----- # Avant l'utilisation, la configuration ## installation Sous Linux Ubuntu ou Debian :
$ sudo apt-get install git
Sous Mac OS X : * installez [MacPorts](http://macports.org/install.php) * installez [Git][git]
$ sudo port selfupdate $ sudo port install git-core
## Configuration globale Enregistrez le fichier suivant comme le fichier `~/.gitconfig`.
[color] branch = auto diff = auto status = auto [alias] st = status co = checkout br = branch lg = log --pretty=oneline --graph logfull = log --pretty=fuller --graph --stat -p unstage = reset HEAD # there should be an article on what this command do uncommit = !zsh -c '"if (($0)); then nb=$(( $0 - 1 )); else nb=0; fi; i=0; while ((i<=nb)); do git revert -n --no-edit HEAD~$i; ((i++)); done; git commit -m \"revert to $0 version(s) back\""' undomerge = reset --hard ORIG_HEAD conflict = !gitk --left-right HEAD...MERGE_HEAD # under Mac OS X, you should use gitx instead # conflict = !gitx --left-right HEAD...MERGE_HEAD [branch] autosetupmerge = true
Vous pouvez obtenir le même résultat en utilisant pour chaque entrée la commande `git config --global`. Configurez ensuite votre nom et votre email. Par exemple si vous vous appelez John Doe et que votre email est `john.doe@email.com`. Lancez les commandes suivantes :
$ git config --global user.name John Doe $ git config --global user.email john.doe@email.com
Voilà, la configuration de base est terminée. J'ai créé dans le fichier de configuration global des *alias* qui vont permettre de taper des commandes un peu plus courtes. ## Récupération d'un projet déjà versionné Si un projet est déjà versionné avec [Git][git] vous devez avoir une `URL` pointant vers les sources du projet. La commande a exécuter est alors très simple.
$ cd ~/Projets $ git clone git://main.server/path/to/file
S'il n'y a pas de serveur git sur le serveur distant, mais que vous avez un accès `ssh`, il suffit de remplacer le `git` de l'url par `ssh`. Pour ne pas avoir à entrer votre mot de passe à chaque fois le plus simple est de procéder comme suit :
$ ssh-keygen -t rsa
Répondez aux question et n'entrez **surtout PAS** de mot de passe. Ensuite copiez les clés sur le serveur distant. Ce n'est pas la façon la plus sûre de procéder. L'idéal étant d'écrire quand même un mot de passe et d'utiliser `ssh-agent`. Ensuite le plus simple, si vous possédez `ssh-copy-id` (sous Ubuntu par exemple) :
me@locahost$ ssh-copy-id -i ~/.ssh/id_rsa.pub me@main.server
ou manuellement :
me@locahost$ scp ~/.ssh/id_rsa.pub me@main.server: me@locahost$ ssh me@main.server password: me@main.server$ cat id_rsa.pub >> ~/.ssh/authorized_keys me@main.server$ rm id_rsa.pub me@main.server$ logout
Maintenant vous n'avez plus besoin de taper votre mot de passe pour accéder à `main.server`. Et donc aussi pour les commandes `git`. ## Créer un nouveau projet Supposons que vous avez déjà un projet avec des fichiers. Alors il est très facile de le versionner.
$ cd /path/to/project $ git init $ git add . $ git commit -m "Initial commit"
Une petite précision. Si vous ne souhaitez pas *versionner* tous les fichiers. Par exemple, les fichiers de compilations intermédiaires. Alors il faut les exclure. Pour cela, avant de lancer la commande `git add .`. Il faut créer un fichier `.gitignore` qui va contenir les *pattern* que git doit ignorer. Par exemple :
*.o *.bak *.swp *~
Maintenant si vous voulez créer un repository sur un serveur distant, il faut absolument qu'il soit en mode `bare`. C'est-à-dire que le repository ne contiendra que la partie contenant les informations utile à la gestion de git, mais pas les fichiers du projet. Sans rentrer dans les détails, il suffit de lancer :
$ cd /path/to/local/project $ git clone --bare . ssh://server/path/to/project
Les autres pourront alors récupérer les modifications via la commande vue précédemment :
git clone ssh://server/path/to/project
## Résumé de la seconde étape Vous avez maintenant un répertoire sur votre ordinateur local. Il est versionné. Vous pouvez vous en rendre compte parcequ'à la racine (et à la racine seulement), il y a un répertoire `.git`. Ce répertoire contient tous les fichiers nécessaires au bon fonctionnement de [Git][git]. Il ne reste plus qu'à savoir comment s'en servir maintenant pour obtenir toutes les jolies promesses faites dans la première partie. [git]: http://git-scm.org "Git"