scratch/content/html/fr/blog/2009-11-12-Git-for-n00b/conf-et-install.md

144 lines
5.1 KiB
Markdown
Raw Normal View History

2010-04-29 14:59:14 +00:00
-----
2010-02-17 12:27:01 +00:00
isHidden: false
menupriority: 2
kind: article
created_at: 2009-11-12T11:39:54+02:00
2010-04-29 14:59:14 +00:00
title: Git pour les nuls
2010-05-09 12:53:46 +00:00
author_name: Yann Esposito
author_uri: yannesposito.com
2010-04-29 14:59:14 +00:00
subtitle: Avant l'utilisation, la configuration
2010-02-17 12:27:01 +00:00
-----
# Avant l'utilisation, la configuration
## installation
Sous Linux Ubuntu ou Debian :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">$ sudo apt-get install git</code></div>
2010-02-17 12:27:01 +00:00
Sous Mac OS X :
* installez [MacPorts](http://macports.org/install.php)
* installez [Git][git]
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ sudo port selfupdate
$ sudo port install git-core
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
## Configuration globale
Enregistrez le fichier suivant comme le fichier `~/.gitconfig`.
2010-04-15 09:45:50 +00:00
<div><code class="zsh" file="gitconfig">
2010-02-17 12:27:01 +00:00
[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
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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 :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ git config --global user.name John Doe
$ git config --global user.email john.doe@email.com
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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.
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ cd ~/Projets
$ git clone git://main.server/path/to/file
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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 :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ ssh-keygen -t rsa
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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`.
2010-09-20 09:49:21 +00:00
Ensuite le plus simple, si vous possédez `ssh-copy-id` (sous Ubuntu par exemple) :
<div><code class="zsh">
me@locahost$ ssh-copy-id -i ~/.ssh/id_rsa.pub me@main.server
</code></div>
ou manuellement :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
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
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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.
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ cd /path/to/project
$ git init
$ git add .
$ git commit -m "Initial commit"
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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 :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
*.o
*.bak
*.swp
*~
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
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 :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
$ cd /path/to/local/project
$ git clone --bare . ssh://server/path/to/project
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
Les autres pourront alors récupérer les modifications via la commande vue précédemment :
2010-04-15 09:45:50 +00:00
<div><code class="zsh">
2010-02-17 12:27:01 +00:00
git clone ssh://server/path/to/project
2010-04-15 09:45:50 +00:00
</code></div>
2010-02-17 12:27:01 +00:00
## 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.
2010-02-17 12:27:01 +00:00
[git]: http://git-scm.org "Git"