GitDémarrer avec Git


Remarques

Git est un système de contrôle de version distribué gratuit qui permet aux programmeurs de suivre les modifications du code, via des "instantanés" (commits), dans leur état actuel. L'utilisation de validations permet aux programmeurs de tester, déboguer et créer de nouvelles fonctionnalités en collaboration. Tous les commits sont conservés dans ce que l'on appelle un "référentiel Git" pouvant être hébergé sur votre ordinateur, des serveurs privés ou des sites Web open source, tels que Github.

Git permet également aux utilisateurs de créer de nouvelles "branches" du code, ce qui permet aux différentes versions du code de cohabiter. Cela permet des scénarios où une branche contient la version stable la plus récente, une branche différente contient un ensemble de nouvelles fonctionnalités en cours de développement, et une autre branche contient un ensemble de fonctionnalités différent. Git crée le processus de création de ces branches, puis les fusionne par la suite, presque sans douleur.

Git a 3 "zones" différentes pour votre code:

  • Répertoire de travail : zone dans laquelle vous allez travailler (création, modification, suppression et organisation des fichiers)
  • Zone de transit : la zone dans laquelle vous listerez les modifications apportées au répertoire de travail
  • Référentiel : où Git stocke en permanence les modifications que vous avez apportées sous différentes versions du projet

Git a été créé à l'origine pour gérer les sources du noyau Linux. En les rendant plus faciles, il encourage les petits commits, la création de projets et la fusion entre les fourchettes, ainsi que la présence de nombreuses branches à courte durée de vie.

Le plus grand changement pour les personnes qui sont habituées à CVS ou à Subversion est que chaque extraction contient non seulement l'arborescence des sources, mais aussi l'historique complet du projet. Les opérations courantes comme la diffraction des révisions, la vérification d'anciennes révisions, la validation (de votre historique local), la création d'une branche, l'extraction d'une branche, la fusion de branches ou de fichiers de correctifs peuvent être effectuées localement sans avoir à communiquer avec un serveur central. Ainsi, la plus grande source de latence et de manque de fiabilité est supprimée. La communication avec le référentiel "en amont" est uniquement nécessaire pour obtenir les dernières modifications et pour publier vos modifications locales sur d'autres développeurs. Cela transforme ce qui était auparavant une contrainte technique (quiconque possède le référentiel du projet) en un choix organisationnel (votre "en amont" est celui avec qui vous choisissez de synchroniser).

Versions

Version Date de sortie
2.13 2017-05-10
2.12 2017-02-24
2,11.1 2017-02-02
2.11 2016-11-29
2.10.2 2016-10-28
2.10 2016-09-02
2.9 2016-06-13
2.8 2016-03-28
2.7 2015-10-04
2.6 2015-09-28
2,5 2015-07-27
2.4 2015-04-30
2.3 2015-02-05
2.2 2014-11-26
2.1 2014-08-16
2.0 2014-05-28
1,9 2014-02-14
1.8.3 2013-05-24
1.8 2012-10-21
1.7.10 2012-04-06
1,7 2010-02-13
1.6.5 2009-10-10
1.6.3 2009-05-07
1.6 2008-08-17
1.5.3 2007-09-02
1,5 2007-02-14
1.4 2006-06-10
1.3 2006-04-18
1.2 2006-02-12
1.1 2006-01-08
1.0 2005-12-21
0,99 2005-07-11

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. Voir la page d' accueil Git pour des instructions d'installation exceptionnellement claires et faciles.

Après avoir installé Git, configurez votre nom d'utilisateur et votre adresse e-mail . Faites ceci 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 obtenue; 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 encombrent 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 ajoute tout dans votre répertoire actuel et ses sous-répertoires:

git add .
 

Cela " mettra en scène" tous les fichiers à ajouter au contrôle de version, en les préparant à être validés lors de votre premier commit.

Pour les fichiers que vous ne souhaitez jamais contrôler par version, créez et .gitignore un fichier nommé .gitignore avant d'exécuter la commande add .

Validez tous les fichiers ajoutés avec un message de validation:

git commit -m "Initial commit"
 

Cela crée un nouvel commit avec le message donné. Un commit est comme une sauvegarde ou un instantané de l'ensemble de votre projet. Vous pouvez maintenant le transférer 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'ouvre et vous pouvez éditer et enregistrer le message de validation.

Ajouter une télécommande

Pour ajouter une nouvelle télécommande, utilisez la commande git remote add sur le terminal, dans le répertoire où se trouve votre référentiel.

La commande git remote add prend deux arguments:

  1. Un nom distant, par exemple, origin
  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 / extraire les commits après avoir ajouté votre télécommande.

Cloner un référentiel

La commande git clone est utilisée pour copier un référentiel Git existant d'un serveur vers l'ordinateur local.

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://yourusername@bitbucket.org/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 source du projet, ainsi qu'un sous-répertoire .git contenant l'historique complet et la configuration du projet.

Pour spécifier un nom différent du répertoire, par exemple MyFolder :

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 .
 

Remarque:

  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 git@github.com:username/projectname.git
     

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

Installation de Git

Entrons dans l'utilisation de Git. Tout d'abord, vous devez l'installer. Vous pouvez l'obtenir de plusieurs façons. les deux principaux sont de l’installer à partir de la source ou d’installer un paquet existant pour votre plate-forme.

Installation à partir de la source

Si vous le pouvez, il est généralement utile d'installer Git depuis la source, 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 itinéraire si vous vous sentez à l'aise pour compiler des logiciels à partir des sources. Il est également vrai que de nombreuses distributions Linux contiennent de très vieux paquets. 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 la meilleure solution.

Pour installer Git, vous devez disposer des bibliothèques suivantes dont Git dépend: curl, zlib, openssl, expat et libiconv. Par exemple, si vous êtes sur un système doté de yum (tel que Fedora) ou apt-get (tel qu'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 chercher 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
 

Après cela, 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 paquetage de base fourni avec votre distribution. Si vous êtes sur Fedora, vous pouvez utiliser yum:

$ yum install git
 

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

$ apt-get install git
 

Installation sur Mac

Il existe trois moyens 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/

Figure 1-7. Installateur Git OS X. L'autre méthode majeure 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'avez pas à ajouter tous les extras, mais vous voudrez probablement inclure + svn au cas où vous devriez utiliser Git avec les 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 a l'une des procédures d'installation les plus faciles. Téléchargez simplement le fichier d'installation exe depuis 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 utile ultérieurement) et de l'interface graphique standard.

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

Apprendre une commande

Pour obtenir plus d'informations sur une commande git - c.-à-d. Des détails sur la commande, les options disponibles et toute autre documentation - 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 pour vous montrer la signification des indicateurs de ligne de commande les plus utilisés, utilisez -h :

git checkout -h
 

Mettre en place 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 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 secrète lorsque vous y êtes invité ou laissez-la vide.

Assurez-vous que votre clé SSH est ajoutée à l'agent ssh. 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://git@bitbucket.server.com:7999/projects/your_project.git
 

Pour cloner un nouveau dépôt sur SSH, vous pouvez exécuter la commande suivante:

$ git clone ssh://git@bitbucket.server.com:7999/projects/your_project.git
 

Configuration de la télécommande en amont

Si vous avez cloné un fork (par exemple un projet open source sur Github), vous ne disposerez peut-être pas d'un accès push au référentiel en amont, vous avez donc besoin des deux, mais vous pourrez récupérer le référentiel 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 en upstream existe déjà (c'est 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 un fork d'un ami / collègue (actuellement, ils n'existent pas):

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

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 l'envoi dans un référentiel distant (par exemple, lors de l'envoi dans un référentiel distant à l'aide de votre compte GitHub, BitBucket ou GitLab).

Pour déclarer cette identité pour tous les référentiels, utilisez git config --global
Cela stockera le paramètre dans le fichier .gitconfig votre utilisateur, par exemple $HOME/.gitconfig ou Windows, %USERPROFILE%\.gitconfig .

git config --global user.name "Your Name"
git config --global user.email mail@example.com
 

Pour déclarer une identité pour un seul référentiel, utilisez git config dans un dépôt.
Cela stockera les paramètres dans le référentiel individuel, dans le fichier $GIT_DIR/config . par exemple /path/to/your/repo/.git/config .

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email mail_at_work@example.com
 

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.


Astuces: si vous avez des identités différentes (une pour un projet open-source, une au travail, une pour les repos privés, ...) et que vous ne voulez pas oublier de définir la bonne pour chaque mise en pension sur laquelle vous travaillez :

  • Supprimer une identité globale

    git config --global --remove-section user.name
    git config --global --remove-section user.email
     
2.8
  • 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 dépôt donné et essayez de vous engager, vous verrez:

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

Code de partage

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

Pour minimiser l'utilisation de l'espace sur le serveur distant, vous créez un référentiel dénudé: celui 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 comme un serveur en amont pour partager facilement des 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://username@server:/path/to/repo.git
 

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

Maintenant, copiez votre référentiel 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 (tracking) qui est utilisée par les commandes Git sans argument, par exemple git pull .