Git - Criar Operação

Neste capítulo, veremos como criar um repositório Git remoto; a partir de agora, vamos nos referir a ele como Git Server. Precisamos de um servidor Git para permitir a colaboração em equipe.

Criar novo usuário

# 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

O comando acima produzirá o seguinte resultado.

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

Criar um repositório básico

Vamos inicializar um novo repositório usando init comando seguido por --bareopção. Ele inicializa o repositório sem um diretório de trabalho. Por convenção, o repositório vazio deve ser nomeado 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

Gerar par de chaves RSA públicas / privadas

Vamos percorrer o processo de configuração de um servidor Git, ssh-keygen O utilitário gera um par de chaves RSA públicas / privadas, que usaremos para autenticação do usuário.

Abra um terminal e digite o seguinte comando e apenas pressione Enter para cada entrada. Após a conclusão bem-sucedida, ele criará um.ssh diretório dentro do diretório inicial.

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

[[email protected] ~]$ ssh-keygen

O comando acima produzirá o seguinte 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 gerou duas chaves, a primeira é privada (ou seja, id_rsa) e a segunda é pública (ou seja, id_rsa.pub).

Note: Nunca compartilhe sua chave privada com outras pessoas.

Adicionando chaves a authorized_keys

Suponha que haja dois desenvolvedores trabalhando em um projeto, ou seja, Tom e Jerry. Ambos os usuários geraram chaves públicas. Vamos ver como usar essas chaves para autenticação.

Tom adicionou sua chave pública ao servidor usando ssh-copy-id comando conforme fornecido abaixo -

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

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

O comando acima produzirá o seguinte 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.

Da mesma forma, Jerry adicionou sua chave pública ao servidor usando o comando ssh-copy-id.

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

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

O comando acima produzirá o seguinte 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 alterações para o repositório

Criamos um repositório vazio no servidor e permitimos acesso para dois usuários. A partir de agora, Tom e Jerry podem enviar suas alterações para o repositório, adicionando-o como um controle remoto.

O comando Git init cria .git diretório para armazenar metadados sobre o repositório toda vez que lê a configuração do .git/config Arquivo.

Tom cria um novo diretório, adiciona o arquivo README e confirma sua alteração como confirmação inicial. Após o commit, ele verifica a mensagem de commit executando ogit 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'

O comando acima produzirá o seguinte resultado.

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

Tom verifica a mensagem de log executando o comando git log.

[[email protected] tom_repo]$ git log

O comando acima produzirá o seguinte resultado.

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

Initial commit

Tom enviou suas alterações para o repositório local. Agora, é hora de enviar por push as alterações para o repositório remoto. Mas antes disso, temos que adicionar o repositório como remoto, esta é uma operação única. Depois disso, ele pode enviar com segurança as alterações para o repositório remoto.

Note- Por padrão, Git empurra apenas para branches correspondentes: para cada branch que existe no lado local, o lado remoto é atualizado se um branch com o mesmo nome já existir lá. Em nossos tutoriais, toda vez que fazemos mudanças noorigin master ramo, use o nome do ramo apropriado de acordo com sua necessidade.

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

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

O comando acima produzirá o seguinte resultado.

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

Agora, as alterações foram confirmadas com sucesso no repositório remoto.