Premiers pas avec Git

Créez votre premier référentiel, puis ajoutez et validez des fichiers

Sur la ligne de commande, vérifiez d’abord que vous avez installé Git :

Sur tous les systèmes d’exploitation :

git --version

Sur les systèmes d’exploitation de type UNIX :

which git

Si rien n’est renvoyé ou si la commande n’est pas reconnue, vous devrez peut-être installer Git sur votre système en téléchargeant et en exécutant le programme d’installation. Consultez la [page d’accueil de Git][1] pour des instructions d’installation exceptionnellement claires et faciles.

Après avoir installé Git, [configurez votre nom d’utilisateur et votre adresse e-mail][2]. Faites-le avant de faire un commit.

Une fois Git installé, accédez au répertoire que vous souhaitez placer sous contrôle de version et créez un référentiel Git vide :

git init

Cela crée un dossier caché, .git, qui contient la plomberie nécessaire au fonctionnement de Git.

Ensuite, vérifiez quels fichiers Git ajoutera à votre nouveau référentiel ; cette étape mérite une attention particulière :

git status

Examinez la liste de fichiers résultante ; vous pouvez indiquer à Git quels fichiers placer dans le contrôle de version (évitez d’ajouter des fichiers contenant des informations confidentielles telles que des mots de passe ou des fichiers qui ne font qu’encombrer le dépôt) :

git add <file/directory name #1> <file/directory name #2> < ... >

Si tous les fichiers de la liste doivent être partagés avec tous ceux qui ont accès au référentiel, une seule commande ajoutera tout dans votre répertoire actuel et ses sous-répertoires :

git add .

Cela [“stage”][3] tous les fichiers à ajouter au contrôle de version, les préparant à être validés lors de votre premier commit.

Pour les fichiers que vous ne voulez jamais sous contrôle de version, créez et remplissez un fichier nommé .gitignore avant exécutant la commande add.

Validez tous les fichiers qui ont été ajoutés, ainsi qu’un message de validation :

git commit -m "Initial commit"

Cela crée un nouveau [commit][4] avec le message donné. Un commit est comme une sauvegarde ou un instantané de l’ensemble de votre projet. Vous pouvez maintenant [pousser] [5] ou le télécharger vers un référentiel distant, et plus tard, vous pourrez y revenir si nécessaire. Si vous omettez le paramètre -m, votre éditeur par défaut s’ouvrira et vous pourrez y modifier et enregistrer le message de validation.

Ajout d’une télécommande

Pour ajouter une nouvelle télécommande, utilisez la commande git remote add sur le terminal, dans le répertoire dans lequel votre référentiel est stocké.

La commande git remote add prend deux arguments :

  1. Un nom distant, par exemple “origine”

  2. Une URL distante, par exemple, https://<your-git-service-address>/user/repo.git

     git remote add origin https://<your-git-service-address>/owner/repository.git
    

REMARQUE : avant d’ajouter la télécommande, vous devez créer le référentiel requis dans votre service git, Vous pourrez pousser/tirer les commits après avoir ajouté votre télécommande.

[1] : https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [2] : https://www.wikiod.com/fr/git/premiers-pas-avec-git#Définition de votre nom d’utilisateur et de votre adresse e-mail [3] : https://www.wikiod.com/fr/git/mise-en-scene [4] : https://www.wikiod.com/fr/git/sengager [5] : https://www.wikiod.com/fr/git/pousser [6] : https://www.wikiod.com/fr/git

Cloner un dépôt

La commande git clone est utilisée pour copier un référentiel Git existant d’un serveur vers la machine locale.

Par exemple, pour cloner un projet GitHub :

cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git

Pour cloner un projet BitBucket :

cd <path where you'd like the clone to create a directory>
git clone https://[email protected]/username/projectname.git

Cela crée un répertoire appelé projectname sur la machine locale, contenant tous les fichiers du référentiel Git distant. Cela inclut les fichiers sources du projet, ainsi qu’un sous-répertoire .git qui contient l’intégralité de l’historique et de la configuration du projet.

Pour spécifier un autre nom de répertoire, par ex. MonDossier :

git clone https://github.com/username/projectname.git MyFolder

Ou pour cloner dans le répertoire courant :

git clone https://github.com/username/projectname.git .

Noter:

  1. Lors du clonage vers un répertoire spécifié, le répertoire doit être vide ou inexistant.

  2. Vous pouvez également utiliser la version ssh de la commande :

    git clone [email protected]:username/projectname.git
    

La version https et la version ssh sont équivalentes. Cependant, certains services d’hébergement tels que GitHub recommandent que vous utilisez https plutôt que ssh.

Code de partage

Pour partager votre code, vous créez un référentiel sur un serveur distant sur lequel vous copierez votre référentiel local.

Pour minimiser l’utilisation de l’espace sur le serveur distant, vous créez un référentiel nu : un référentiel qui ne contient que les objets .git et ne crée pas de copie de travail dans le système de fichiers. En prime, vous [définissez cette télécommande][1] en tant que serveur en amont pour partager facilement les mises à jour avec d’autres programmeurs.

Sur le serveur distant :

git init --bare /path/to/repo.git

Sur la machine locale :

git remote add origin ssh://[email protected]:/path/to/repo.git

(Notez que ssh: n’est qu’un moyen possible d’accéder au référentiel distant.)

Copiez maintenant votre dépôt local sur la télécommande :

git push --set-upstream origin master

L’ajout de --set-upstream (ou -u) a créé une référence en amont (de suivi) qui est utilisée par les commandes Git sans argument, par ex. git tirer.

[1] : https://www.wikiod.com/fr/git/premiers-pas-avec-git#Configuration de la télécommande en amont

Définition de votre nom d’utilisateur et de votre adresse e-mail

You need to set who you are *before* creating any commit.  That will allow commits to have the right author name and email associated to them.

** Cela n’a rien à voir avec l’authentification lors de la transmission vers un référentiel distant ** (par exemple, lors de la transmission vers un référentiel distant à l’aide de votre compte GitHub, BitBucket ou GitLab)

Pour déclarer cette identité pour tous les dépôts, utilisez git config --global Cela stockera le paramètre dans le fichier .gitconfig de votre utilisateur : par ex. $HOME/.gitconfig ou pour Windows, %USERPROFILE%\.gitconfig.

git config --global user.name "Your Name"
git config --global user.email [email protected]

Pour déclarer une identité pour un seul dépôt, utilisez git config dans un dépôt. Cela stockera le paramètre dans le référentiel individuel, dans le fichier $GIT_DIR/config. par exemple. /chemin/vers/votre/dépôt/.git/config.

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email [email protected]

Les paramètres stockés dans le fichier de configuration d’un référentiel ont priorité sur la configuration globale lorsque vous utilisez ce référentiel.


Conseils : si vous avez différentes identités (une pour le projet open source, une au travail, une pour les dépôts privés, …), et que vous ne voulez pas oublier de définir la bonne pour chaque dépôt différent sur lequel vous travaillez :

  • Supprimer une identité globale

    git config --global --remove-section user.name
    git config --global --remove-section user.email
    
  • Pour forcer git à rechercher votre identité uniquement dans les paramètres d’un référentiel, pas dans la configuration globale :

      git config --global user.useConfigOnly true
    

De cette façon, si vous oubliez de définir votre user.name et user.email pour un référentiel donné et essayez de faire un commit, vous verrez :

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled

Configuration de la télécommande en amont

Si vous avez cloné un fork (par exemple, un projet open source sur Github), vous n’avez peut-être pas accès au dépôt en amont, vous avez donc besoin à la fois de votre fork mais vous pouvez récupérer le dépôt en amont.

Vérifiez d’abord les noms distants :

$ git remote -v
origin    https://github.com/myusername/repo.git (fetch)
origin    https://github.com/myusername/repo.git (push)
upstream  # this line may or may not be here

Si upstream est déjà présent (c’est le cas sur certaines versions de Git), vous devez définir l’URL (actuellement vide) :

$ git remote set-url upstream https://github.com/projectusername/repo.git

Si l’amont n’est pas là, ou si vous souhaitez également ajouter le fork d’un ami/collègue (actuellement, il n’existe pas) :

$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git

En savoir plus sur une commande

Pour obtenir plus d’informations sur n’importe quelle commande git - c’est-à-dire des détails sur ce que fait la commande, les options disponibles et d’autres documentations - utilisez l’option --help ou la commande help.

Par exemple, pour obtenir toutes les informations disponibles sur la commande git diff, utilisez :

git diff --help
git help diff

De même, pour obtenir toutes les informations disponibles sur la commande status, utilisez :

git status --help
git help status

Si vous voulez seulement une aide rapide vous montrant la signification des drapeaux de ligne de commande les plus utilisés, utilisez -h :

git checkout -h

Configurer SSH pour Git

Si vous utilisez Windows, ouvrez Git Bash. Si vous utilisez Mac ou Linux ouvrez votre Terminal.

Avant de générer une clé SSH, vous pouvez vérifier si vous avez des clés SSH existantes.

Listez le contenu de votre répertoire ~/.ssh :

$ ls -al ~/.ssh 
# Lists all the files in your ~/.ssh directory

Vérifiez la liste des répertoires pour voir si vous avez déjà une clé SSH publique. Par défaut, les noms de fichiers des clés publiques sont l’un des suivants :

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

Si vous voyez une paire de clés publique et privée existante répertoriée que vous souhaitez utiliser sur votre compte Bitbucket, GitHub (ou similaire), vous pouvez copier le contenu du fichier id_*.pub.

Sinon, vous pouvez créer une nouvelle paire de clés publique et privée avec la commande suivante :

$ ssh-keygen

Appuyez sur la touche Entrée ou Retour pour accepter l’emplacement par défaut. Entrez et ressaisissez une phrase de passe lorsque vous y êtes invité, ou laissez-la vide.

Assurez-vous que votre clé SSH est ajoutée au ssh-agent. Démarrez l’agent ssh en arrière-plan s’il n’est pas déjà en cours d’exécution :

$ eval "$(ssh-agent -s)"

Ajoutez votre clé SSH à l’agent ssh. Notez que vous devrez remplacer id_rsa dans la commande par le nom de votre fichier de clé privée :

$ ssh-add ~/.ssh/id_rsa

Si vous souhaitez modifier l’amont d’un référentiel existant de HTTPS à SSH, vous pouvez exécuter la commande suivante :

$ git remote set-url origin ssh://[email protected]:7999/projects/your_project.git

Pour cloner un nouveau référentiel via SSH, vous pouvez exécuter la commande suivante :

$ git clone ssh://[email protected]:7999/projects/your_project.git

Installation de Git

Passons à l’utilisation de Git. Tout d’abord, vous devez l’installer. Vous pouvez l’obtenir de plusieurs façons; les deux principales consistent à l’installer à partir des sources ou à installer un package existant pour votre plate-forme.

Installation à partir de la source

Si vous le pouvez, il est généralement utile d’installer Git à partir des sources, car vous obtiendrez la version la plus récente. Chaque version de Git a tendance à inclure des améliorations utiles de l’interface utilisateur, donc obtenir la dernière version est souvent le meilleur moyen si vous vous sentez à l’aise pour compiler un logiciel à partir de la source. Il est également vrai que de nombreuses distributions Linux contiennent des packages très anciens ; donc, à moins que vous ne soyez sur une distribution très à jour ou que vous utilisiez des backports, l’installation à partir de la source peut être le meilleur pari.

Pour installer Git, vous devez disposer des bibliothèques suivantes dont dépend Git : curl, zlib, openssl, expat et libiconv. Par exemple, si vous êtes sur un système qui a yum (comme Fedora) ou apt-get (comme un système basé sur Debian), vous pouvez utiliser l’une de ces commandes pour installer toutes les dépendances :

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

Lorsque vous avez toutes les dépendances nécessaires, vous pouvez aller de l’avant et récupérer le dernier instantané sur le site Web de Git :

http://git-scm.com/download Ensuite, compilez et installez :

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

Une fois cela fait, vous pouvez également obtenir Git via Git lui-même pour les mises à jour :

$ git clone git://git.kernel.org/pub/scm/git/git.git

Installation sous Linux

Si vous souhaitez installer Git sur Linux via un programme d’installation binaire, vous pouvez généralement le faire via l’outil de gestion de packages de base fourni avec votre distribution. Si vous êtes sur Fedora, vous pouvez utiliser yum :

$ yum install git

Ou si vous êtes sur une distribution basée sur Debian comme Ubuntu, essayez apt-get :

$ apt-get install git

Installation sur Mac

Il existe trois façons simples d’installer Git sur un Mac. Le plus simple est d’utiliser l’installateur graphique Git, que vous pouvez télécharger depuis la page SourceForge.

http://sourceforge.net/projects/git-osx-installer/

Illustration 1-7. Installateur Git OS X. L’autre méthode consiste à installer Git via MacPorts (http://www.macports.org). Si vous avez installé MacPorts, installez Git via

$ sudo port install git +svn +doc +bash_completion +gitweb

Vous n’êtes pas obligé d’ajouter tous les extras, mais vous voudrez probablement inclure +svn au cas où vous auriez à utiliser Git avec des dépôts Subversion (voir Chapitre 8).

Homebrew (http://brew.sh/) est une autre alternative pour installer Git. Si vous avez installé Homebrew, installez Git via

$ brew install git

Installation sous Windows

L’installation de Git sur Windows est très simple. Le projet msysGit possède l’une des procédures d’installation les plus simples. Téléchargez simplement le fichier exe du programme d’installation à partir de la page GitHub et exécutez-le :

http://msysgit.github.io

Une fois installé, vous disposez à la fois d’une version en ligne de commande (y compris un client SSH qui vous sera utile plus tard) et de l’interface graphique standard.

Remarque sur l’utilisation de Windows : vous devez utiliser Git avec le shell msysGit fourni (style Unix), il permet d’utiliser les lignes de commande complexes données dans ce livre. Si vous avez besoin, pour une raison quelconque, d’utiliser la console native du shell / ligne de commande de Windows, vous devez utiliser des guillemets doubles au lieu des guillemets simples (pour les paramètres contenant des espaces) et vous devez citer les paramètres se terminant par l’accent circonflexe (^ ) s’ils sont les derniers sur la ligne, car il s’agit d’un symbole de continuation dans Windows.