Git - Créer une opération

Dans ce chapitre, nous verrons comment créer un dépôt Git distant; à partir de maintenant, nous l'appellerons Git Server. Nous avons besoin d'un serveur Git pour permettre la collaboration en équipe.

Créer un nouvel utilisateur

# add new group
[[email protected] ~]# groupadd dev

# add new user
[[email protected] ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser

# change password
[[email protected] ~]# passwd gituser

La commande ci-dessus produira le résultat suivant.

Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.

Créer un référentiel nu

Initialisons un nouveau référentiel en utilisant init commande suivie de --bareoption. Il initialise le référentiel sans répertoire de travail. Par convention, le référentiel nu doit être nommé comme.git.

[[email protected] ~]$ pwd
/home/gituser

[[email protected] ~]$ mkdir project.git

[[email protected] ~]$ cd project.git/

[[email protected] project.git]$ ls

[[email protected] project.git]$ git --bare init
Initialized empty Git repository in /home/gituser-m/project.git/

[[email protected] project.git]$ ls
branches config description HEAD hooks info objects refs

Générer une paire de clés RSA publique / privée

Passons en revue le processus de configuration d'un serveur Git, ssh-keygen L'utilitaire génère une paire de clés RSA publique / privée, que nous utiliserons pour l'authentification des utilisateurs.

Ouvrez un terminal et entrez la commande suivante et appuyez simplement sur Entrée pour chaque entrée. Après avoir réussi, il créera un.ssh répertoire dans le répertoire personnel.

[email protected] ~]$ pwd
/home/tom

[[email protected] ~]$ ssh-keygen

La commande ci-dessus produira le résultat suivant.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/tom/.ssh/id_rsa): Press Enter Only
Created directory '/home/tom/.ssh'.
Enter passphrase (empty for no passphrase): ---------------> Press Enter Only
Enter same passphrase again: ------------------------------> Press Enter Only
Your identification has been saved in /home/tom/.ssh/id_rsa.
Your public key has been saved in /home/tom/.ssh/id_rsa.pub.
The key fingerprint is:
df:93:8c:a1:b8:b7:67:69:3a:1f:65:e8:0e:e9:25:a1 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|
.
|
| Soo |
| o*B. |
| E = *.= |
| oo==. . |
| ..+Oo
|
+-----------------+

ssh-keygen a généré deux clés, la première est privée (c'est-à-dire id_rsa) et la seconde est publique (c'est-à-dire id_rsa.pub).

Note: Ne partagez jamais votre clé privée avec d'autres.

Ajout de clés à authorised_keys

Supposons que deux développeurs travaillent sur un projet, à savoir Tom et Jerry. Les deux utilisateurs ont généré des clés publiques. Voyons comment utiliser ces clés pour l'authentification.

Tom a ajouté sa clé publique au serveur en utilisant ssh-copy-id commande comme indiqué ci-dessous -

[[email protected] ~]$ pwd
/home/tom

[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

La commande ci-dessus produira le résultat suivant.

[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

De même, Jerry a ajouté sa clé publique au serveur en utilisant la commande ssh-copy-id.

[[email protected] ~]$ pwd
/home/jerry

[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]

La commande ci-dessus produira le résultat suivant.

[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Transférer les modifications dans le référentiel

Nous avons créé un référentiel nu sur le serveur et autorisé l'accès à deux utilisateurs. À partir de maintenant, Tom et Jerry peuvent envoyer leurs modifications au référentiel en l'ajoutant en tant que télécommande.

La commande Git init crée .git répertoire pour stocker les métadonnées sur le référentiel chaque fois qu'il lit la configuration à partir du .git/config fichier.

Tom crée un nouveau répertoire, ajoute le fichier README et valide sa modification en tant que validation initiale. Après la validation, il vérifie le message de validation en exécutant legit log commander.

[[email protected] ~]$ pwd
/home/tom

[[email protected] ~]$ mkdir tom_repo

[[email protected] ~]$ cd tom_repo/

[[email protected] tom_repo]$ git init
Initialized empty Git repository in /home/tom/tom_repo/.git/

[[email protected] tom_repo]$ echo 'TODO: Add contents for README' > README

[[email protected] tom_repo]$ git status -s
?? README

[[email protected] tom_repo]$ git add .

[[email protected] tom_repo]$ git status -s
A README

[[email protected] tom_repo]$ git commit -m 'Initial commit'

La commande ci-dessus produira le résultat suivant.

[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README

Tom vérifie le message du journal en exécutant la commande git log.

[[email protected] tom_repo]$ git log

La commande ci-dessus produira le résultat suivant.

commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530

Initial commit

Tom a validé ses modifications dans le référentiel local. Il est maintenant temps de transmettre les modifications au référentiel distant. Mais avant cela, nous devons ajouter le référentiel en tant que distant, c'est une opération ponctuelle. Après cela, il peut pousser en toute sécurité les modifications vers le référentiel distant.

Note- Par défaut, Git ne pousse que vers les branches correspondantes: pour chaque branche qui existe du côté local, le côté distant est mis à jour si une branche du même nom existe déjà là-bas. Dans nos tutoriels, chaque fois que nous apportons des modifications auorigin master succursale, utilisez le nom de succursale approprié selon vos besoins.

[[email protected] tom_repo]$ git remote add origin [email protected]:project.git

[[email protected] tom_repo]$ git push origin master

La commande ci-dessus produira le résultat suivant.

Counting objects: 3, done.
Writing objects: 100% (3/3), 242 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
master −> master

Désormais, les modifications sont correctement validées dans le référentiel distant.