Git: operación de creación
En este capítulo, veremos cómo crear un repositorio Git remoto; de ahora en adelante, nos referiremos a él como Git Server. Necesitamos un servidor Git para permitir la colaboración en equipo.
Crear nuevo usuario
# 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
El comando anterior producirá el siguiente resultado.
Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.
Crear un repositorio desnudo
Inicialicemos un nuevo repositorio usando init comando seguido de --bareopción. Inicializa el repositorio sin un directorio de trabajo. Por convención, el repositorio básico debe nombrarse como.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
Generar par de claves RSA públicas / privadas
Repasemos el proceso de configuración de un servidor Git, ssh-keygen La utilidad genera un par de claves RSA pública / privada, que usaremos para la autenticación de usuarios.
Abra una terminal e ingrese el siguiente comando y simplemente presione enter para cada entrada. Una vez completado con éxito, creará un.ssh directorio dentro del directorio de inicio.
[email protected] ~]$ pwd
/home/tom
[[email protected] ~]$ ssh-keygen
El comando anterior producirá el siguiente resultado.
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 generado dos claves, la primera es privada (es decir, id_rsa) y la segunda es pública (es decir, id_rsa.pub).
Note: Nunca comparta su LLAVE PRIVADA con otros.
Adición de claves a claves_autorizadas
Suponga que hay dos desarrolladores trabajando en un proyecto, a saber, Tom y Jerry. Ambos usuarios han generado claves públicas. Veamos cómo usar estas claves para la autenticación.
Tom agregó su clave pública al servidor usando ssh-copy-id comando como se indica a continuación -
[[email protected] ~]$ pwd
/home/tom
[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
El comando anterior producirá el siguiente resultado.
[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 manera similar, Jerry agregó su clave pública al servidor mediante el comando ssh-copy-id.
[[email protected] ~]$ pwd
/home/jerry
[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
El comando anterior producirá el siguiente resultado.
[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.
Enviar cambios al repositorio
Creamos un repositorio simple en el servidor y permitimos el acceso a dos usuarios. A partir de ahora, Tom y Jerry pueden enviar sus cambios al repositorio agregándolo como control remoto.
El comando git init crea .git directorio para almacenar metadatos sobre el repositorio cada vez que lee la configuración del .git/config archivo.
Tom crea un nuevo directorio, agrega el archivo README y confirma su cambio como confirmación inicial. Después de confirmar, verifica el mensaje de confirmación ejecutando elgit log mando.
[[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'
El comando anterior producirá el siguiente resultado.
[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
Tom comprueba el mensaje de registro ejecutando el comando git log.
[[email protected] tom_repo]$ git log
El comando anterior producirá el siguiente resultado.
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom confirmó sus cambios en el repositorio local. Ahora es el momento de enviar los cambios al repositorio remoto. Pero antes de eso, tenemos que agregar el repositorio como un control remoto, esta es una operación de una sola vez. Después de esto, puede enviar los cambios de forma segura al repositorio remoto.
Note- De forma predeterminada, Git empuja solo a las ramas coincidentes: para cada rama que existe en el lado local, el lado remoto se actualiza si ya existe una rama con el mismo nombre allí. En nuestros tutoriales, cada vez que introducimos cambios en elorigin master sucursal, use el nombre de sucursal apropiado de acuerdo con sus requisitos.
[[email protected] tom_repo]$ git remote add origin [email protected]:project.git
[[email protected] tom_repo]$ git push origin master
El comando anterior producirá el siguiente resultado.
Counting objects: 3, done.
Writing objects: 100% (3/3), 242 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]git.server.com:project.git
* [new branch]
master −> master
Ahora, los cambios se han confirmado correctamente en el repositorio remoto.