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
[root@CentOS ~]# groupadd dev

# add new user
[root@CentOS ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser

# change password
[root@CentOS ~]# 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.

[gituser@CentOS ~]$ pwd
/home/gituser

[gituser@CentOS ~]$ mkdir project.git

[gituser@CentOS ~]$ cd project.git/

[gituser@CentOS project.git]$ ls

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

[gituser@CentOS 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.

tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ 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 tom@CentOS
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 -

[tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ 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.

[jerry@CentOS ~]$ pwd
/home/jerry

[jerry@CentOS ~]$ 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.

[tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ mkdir tom_repo

[tom@CentOS ~]$ cd tom_repo/

[tom@CentOS tom_repo]$ git init
Initialized empty Git repository in /home/tom/tom_repo/.git/

[tom@CentOS tom_repo]$ echo 'TODO: Add contents for README' > README

[tom@CentOS tom_repo]$ git status -s
?? README

[tom@CentOS tom_repo]$ git add .

[tom@CentOS tom_repo]$ git status -s
A README

[tom@CentOS 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.

[tom@CentOS 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.

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

[tom@CentOS 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.