Git - Crea operazione
In questo capitolo vedremo come creare un repository Git remoto; d'ora in poi, lo chiameremo Git Server. Abbiamo bisogno di un server Git per consentire la collaborazione in team.
Crea nuovo utente
# 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
Il comando precedente produrrà il seguente risultato.
Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.
Crea un archivio nudo
Inizializziamo un nuovo repository usando init comando seguito da --bareopzione. Inizializza il repository senza una directory di lavoro. Per convenzione, il repository nudo deve essere denominato come.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
Genera coppia di chiavi RSA pubblica / privata
Esaminiamo il processo di configurazione di un server Git, ssh-keygen l'utility genera una coppia di chiavi RSA pubblica / privata, che useremo per l'autenticazione dell'utente.
Apri un terminale e inserisci il seguente comando e premi semplicemente Invio per ogni ingresso. Dopo il completamento con successo, creerà un file.ssh directory all'interno della directory home.
[email protected] ~]$ pwd
/home/tom
[[email protected] ~]$ ssh-keygen
Il comando precedente produrrà il seguente risultato.
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 ha generato due chiavi, la prima è privata (cioè, id_rsa) e la seconda è pubblica (cioè, id_rsa.pub).
Note: Non condividere mai la tua CHIAVE PRIVATA con altri.
Aggiunta di chiavi a authorized_keys
Supponiamo che due sviluppatori stiano lavorando a un progetto, ovvero Tom e Jerry. Entrambi gli utenti hanno generato chiavi pubbliche. Vediamo come utilizzare queste chiavi per l'autenticazione.
Tom ha aggiunto la sua chiave pubblica al server utilizzando ssh-copy-id comando come indicato di seguito -
[[email protected] ~]$ pwd
/home/tom
[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Il comando precedente produrrà il seguente risultato.
[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.
Allo stesso modo, Jerry ha aggiunto la sua chiave pubblica al server utilizzando il comando ssh-copy-id.
[[email protected] ~]$ pwd
/home/jerry
[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Il comando precedente produrrà il seguente risultato.
[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.
Invia modifiche al repository
Abbiamo creato un repository nudo sul server e consentito l'accesso a due utenti. D'ora in poi, Tom e Jerry possono inviare le modifiche al repository aggiungendolo come telecomando.
Il comando Git init crea .git directory per memorizzare i metadati sul repository ogni volta che legge la configurazione dal file .git/config file.
Tom crea una nuova directory, aggiunge il file README e salva la sua modifica come commit iniziale. Dopo il commit, verifica il messaggio di commit eseguendo ilgit log comando.
[[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'
Il comando precedente produrrà il seguente risultato.
[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
Tom controlla il messaggio di log eseguendo il comando git log.
[[email protected] tom_repo]$ git log
Il comando precedente produrrà il seguente risultato.
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom ha impegnato le sue modifiche al repository locale. Ora è il momento di inviare le modifiche al repository remoto. Ma prima, dobbiamo aggiungere il repository come remoto, questa è un'operazione una tantum. Dopodiché, può inviare in sicurezza le modifiche al repository remoto.
Note- Per impostazione predefinita, Git esegue il push solo ai rami corrispondenti: per ogni ramo che esiste sul lato locale, il lato remoto viene aggiornato se esiste già un ramo con lo stesso nome. Nei nostri tutorial, ogni volta che inseriamo modifiche al fileorigin master ramo, utilizzare il nome del ramo appropriato in base alle proprie esigenze.
[[email protected] tom_repo]$ git remote add origin [email protected]:project.git
[[email protected] tom_repo]$ git push origin master
Il comando precedente produrrà il seguente risultato.
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
Ora, le modifiche vengono salvate con successo nel repository remoto.