Como instalar e configurar o Git em Ubuntu 22.04?


Instalar e configurar o Git em Ubuntu 22.04

Objetivo

O Git é um dos mais famosos sistemas de controle de versões (VCS) do mundo. A sua adoção alargada nos últimos anos torna-o numa ferramenta inevitável no mundo do desenvolvimento.

Neste tutorial, descobrirá como instalar e configurar o Git na distribuição Linux Ubuntu 22.04.

 

Requisitos

Este tutorial parte do princípio de que dispõe de um Ubuntu 22.04, a correr numa instância de computação OVHcloud, por exemplo. Alguns conhecimentos básicos sobre o seu funcionamento são também necessários. Se não tiver o Ubuntu 22.04, siga este guia para utilizar uma Instância de Computação OVHcloud.

 

Instruções

Neste tutorial, irá instalar o Git, configurá-lo e aprender a assinar os seus commits.

Aquando da redação deste tutorial, a última versão LTS do Git é a 2.36.1.

 

Instalação do Git LTS

A forma mais fácil de instalar o Git em Ubuntu é usar o comando apt-get.
Para ter a versão LTS mais recente, necessita de adicionar um repositório:

sudo add-apt-repository ppa:git-core/ppa

O resultado deve ser o seguinte:

$ sudo add-apt-repository ppa:git-core/ppa

PPA publishes dbgsym, you may need to include 'main/debug' component
Repository: 'deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu/ jammy main'
Description:
The most current stable version of Git for Ubuntu.

For release candidates, go to https://launchpad.net/~git-core/+archive/candidate .
More info: https://launchpad.net/~git-core/+archive/ubuntu/ppa
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Found existing deb entry in /etc/apt/sources.list.d/git-core-ubuntu-ppa-jammy.list
Adding deb entry to /etc/apt/sources.list.d/git-core-ubuntu-ppa-jammy.list
Found existing deb-src entry in /etc/apt/sources.list.d/git-core-ubuntu-ppa-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/git-core-ubuntu-ppa-jammy.list
Adding key to /etc/apt/trusted.gpg.d/git-core-ubuntu-ppa.gpg with fingerprint E1DD270288B4E6030699E45FA1715D88E1DF1F24
Hit:1 http://nova.clouds.archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-updates InRelease                    
Get:3 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]                              
Ign:4 https://pkg.jenkins.io/debian-stable binary/ InRelease                                                                                                 
Hit:5 https://pkg.jenkins.io/debian-stable binary/ Release                                                                                     
Hit:6 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease       
Hit:7 http://security.ubuntu.com/ubuntu jammy-security InRelease                 
Fetched 99.8 kB in 1s (112 kB/s)
Reading package lists... Done

Em seguida, instale o Git com o comando apt-get:

sudo apt-get update && sudo apt-get -y install git

O resultado deve ser o seguinte:

$ sudo apt-get update && sudo apt-get -y install git

Hit:1 http://nova.clouds.archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-updates InRelease                                       
Hit:3 http://security.ubuntu.com/ubuntu jammy-security InRelease                                                 
Get:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]                           
Hit:5 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease                                       
Ign:6 https://pkg.jenkins.io/debian-stable binary/ InRelease                                                     
Hit:7 https://pkg.jenkins.io/debian-stable binary/ Release
Fetched 99.8 kB in 1s (113 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  git-man
Suggested packages:
  git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn
The following packages will be upgraded:
  git git-man
2 upgraded, 0 newly installed, 0 to remove and 27 not upgraded.
Need to get 7700 kB of archives.
After this operation, 8810 kB of additional disk space will be used.
Get:1 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy/main amd64 git amd64 1:2.36.1-0ppa1~ubuntu22.04.1 [5768 kB]
Get:2 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy/main amd64 git-man all 1:2.36.1-0ppa1~ubuntu22.04.1 [1933 kB]
Fetched 7700 kB in 0s (22.9 MB/s)
(Reading database ... 131441 files and directories currently installed.)
Preparing to unpack .../git_1%3a2.36.1-0ppa1~ubuntu22.04.1_amd64.deb ...
Unpacking git (1:2.36.1-0ppa1~ubuntu22.04.1) over (1:2.34.1-1ubuntu1.2) ...
Preparing to unpack .../git-man_1%3a2.36.1-0ppa1~ubuntu22.04.1_all.deb ...
Unpacking git-man (1:2.36.1-0ppa1~ubuntu22.04.1) over (1:2.34.1-1ubuntu1.2) ...
Setting up git-man (1:2.36.1-0ppa1~ubuntu22.04.1) ...
Setting up git (1:2.36.1-0ppa1~ubuntu22.04.1) ...
Processing triggers for man-db (2.10.2-1) ...
Scanning processes...                                                                                             
Scanning candidates...                                                                                            
Scanning linux images...                                                                                          

Restarting services...
 systemctl restart irqbalance.service jenkins.service packagekit.service polkit.service postgresql@14-main.service qemu-guest-agent.service ssh.service udisks2.service
Service restarts being deferred:
 systemctl restart ModemManager.service
 systemctl restart networkd-dispatcher.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

Em seguida, pode testar a nova instalação e visualizar a versão do Git:

git --version

O resultado deve ser o seguinte:

$ git --version

git version 2.36.1

 

Configuração básica: nome e e-mail

Uma vez que o Git está instalado, é aconselhável configurar alguns elementos. Mais concretamente a parte da identificação que será «anexada» durante os commits. Para não ter de fazer esta configuração em cada repositório, é possível fazê-la de forma global graças a um ficheiro .gitconfig na raiz do utilizador home.

É possível criar este ficheiro manualmente ou através da opção config do comando git:

git config --global user.name "Firstname Lastname" git config --global user.email "firstname.lastname@mail.com"

Depois, pode visualizar o seu ficheiro .gitconfig no seu diretório home:

cat .gitconfig

O resultado deve ser o seguinte:

$ cat .gitconfig
 
[user]
	name = Firstname Lastname
	email = firstname.lastname@mail.com

 

Configuração avançada: commits assinados

É fortemente recomendado que assine os seus commits. A principal razão para tal é ter a certeza de que é realmente o proprietário dos commits, e que não é alguém a fazer-se passar por si. Como já viu antes, o nome e o e-mail são legíveis por todos em repositórios remotos como o GitHub ou o GitLab, por exemplo. Qualquer pessoa pode introduzir as mesmas definições e fazer-se passar por si.

Todos os comandos utilizarão o utilitário gpg, já instalado no Ubuntu.

O primeiro passo consiste em gerar a chave:

gpg --generate-key

O resultado deve ser o seguinte:

$ gpg --generate-key

gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Firstname Lastname
Email address: firstname.lastname@email.com
You selected this USER-ID:
    "Firstname Lastname "

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key BECE6D85FDA1B6C8 marked as ultimately trusted
gpg: directory '/home/ubuntu/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/ubuntu/.gnupg/openpgp-revocs.d/18E345A3F27325A8B4816875BECE6D85FDA1B6C8.rev'
public and secret key created and signed.

pub   rsa3072 2022-06-17 [SC] 
      18E345A3F27325A8B4816875BECE6D85FDA1B6C8
uid                      Firstname Lastname 
sub   rsa3072 2022-06-17 [E] 

Em seguida, verifique a chave criada:

gpg --list-secret-keys --keyid-format=long

O resultado deve ser o seguinte:

$ gpg --list-secret-keys --keyid-format=long

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2024-06-16
/home/ubuntu/.gnupg/pubring.kbx
-------------------------------
sec   rsa3072/ABCDEFGHIJKLMNOP 2022-06-17 [SC] 
      SSSSSSSSSSSSSSSSSSSSSSSSABCDEFGHIJKLMNOP
uid                 [ultimate] Firstname Lastname 
ssb   rsa3072/ZZZZZZZZZZZZZZZZ 2022-06-17 [E] 

Depois, adicione a chave à sua configuração Git no ficheiro .gitconfig do seu repositório home:

git config --global commit.gpgsign true git config --global gpg.program gpg git config --global user.signingkey ABCDEFGHIJKLMNOP

Por último, deve extrair e copiar a sua chave para o seu fornecedor Git à distância (GitLab, GitHub, MasBucket, etc.):

gpg --armor --export ABCDEFGHIJKLMNOP

O resultado deve ser o seguinte:

$ gpg --armor --export ABCDEFGHIJKLMNOP

-----BEGIN PGP PUBLIC KEY BLOCK-----

TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g
SW4gYmliZW5kdW0gaGVuZHJlcml0IG5pYmggaWQgZ3JhdmlkYS4gUGhhc2VsbHVzIG5lYyBhbGlx
dWFtIG1hc3NhLCBmcmluZ2lsbGEgc29sbGljaXR1ZGluIG1ldHVzLiBQaGFzZWxsdXMgc2l0IGFt
ZXQgdGluY2lkdW50IG9yY2kuIERvbmVjIHF1aXMgdml2ZXJyYSBsaWd1bGEuIE5hbSBwaGFyZXRy
YSBlbGl0IGV4LCBzaXQgYW1ldCB0aW5jaWR1bnQgbmliaCB0ZW1wb3IgdmVsLiBOdWxsYSBzZW1w
ZXIgcGxhY2VyYXQgZGlhbSBzaXQgYW1ldCB2YXJpdXMuIFN1c3BlbmRpc3NlIHRyaXN0aXF1ZSBl
Z2V0IGxvcmVtIGV1IHBsYWNlcmF0LiBOdW5jIGlhY3VsaXMgbnVuYyBldCBuZXF1ZSBlZmZpY2l0
dXIgZnJpbmdpbGxhLiBWZXN0aWJ1bHVtIG1vbGxpcyBldWlzbW9kIG1hZ25hIHNpdCBhbWV0IGlu
dGVyZHVtLiBQZWxsZW50ZXNxdWUgaW1wZXJkaWV0IGxvcmVtIG51bGxhbS4g

-----END PGP PUBLIC KEY BLOCK-----

Já está! Instalou e configurou com sucesso o Git no Ubuntu 22.04.

 

Ir mais longe

Consulte as ofertas de instâncias Public Cloud na OVHcloud.