Páginas

domingo, janeiro 10, 2021

26. GIT - Sistema de Controle de Versões

"O Git é um sistema de controle de versão de código aberto e gratuito, projetado para lidar com tudo, desde projetos pequenos aos muito grandes, com velocidade e eficiência". Ele é muito usado por programadores para facilitar o desenvolvimento de softwares de forma conjunta. Eu uso ele para acessar meus projetos na plataforma GitHub. Aqui vamos aprender o básico dele.

Primeiro instale o programa:

$ sudo apt install git

Com ele você pode acessar a página de um projeto e baixar os arquivos do projeto para uma pasta no seu PC. Primeiro vamos criar uma pasta na sua pasta home para colocar todos os projetos baixados:

$ mkdir ~/Projetos

Clonar

Entre na pasta. Você com certeza sabe fazer isso. Agora vá no GitHub e escolha um projeto do seu interesse para copiar. Eu vou usar o Ventoy como exemplo: um programinha bem útil. Depois falo mais sobre ele. Você clica no botão verde "Code" e copia o link.

Volte ao terminal, dentro da pasta Projetos:

$ git clone https://github.com/ventoy/Ventoy.git

Ele vai criar a pasta ~/Projetos/Ventoy e deve ter copiado tudo pra dentro dela.

Exportar

Agora, supondo que você queira exportar todo o conteúdo para um arquivo compactado, seja para trabalhar com ele, compilá-lo em outro lugar, compartilhar etc. Este comando faz isso:

$ git archive -o "ventoy.tar" master

O "nome-do-arquivo.tar" vai aparecer dentro da pasta Ventoy. Tem outras opções. O "tar" não comprime, só armazena, então que tal usar o "zip"?

$ git archive -o "ventoy.zip" master

O arquivo será compactado em zip. Digamos que você quer uma compressão maior, basta adicionar, depois de "master" um número variando de 0 para apenas armazenar, à 9 para máxima compressão.

$ git archive -o "ventoy.zip" master -9

Se você abrir esse arquivo verá uma pasta chamada .github, o ponto inicial indica que é uma pasta oculta. Ela é criada pelo github, não serve pra muita coisa, mas foi exportada mesmo assim. Podemos excluí-la da exportação se quisermos.

Dentro da pasta Ventoy, crie um arquivo chamado .gitattributes (não esqueça o ponto). Se depois de criar ela sumir é porque ela é oculta... Dooh! Pressione Ctrl+H pra mostrá-la. Abra o arquivo e copie estas linhas pra dentro dele:

/.git export-ignore
/.github export-ignore
.gitignore export-ignore
.gitattributes export-ignore

Isso diz que as pastas .git, .github e os arquivos .gitignore e o próprio .gitattributes serão excluídos da exportação. Você pode adicionar qualquer pasta ou arquivo à essa lista.

Agora volte ao terminal na pasta Ventoy. Vamos exportar de novo, mas excluindo os arquivos indesejáveis:

$ git archive -o "ventoy.zip" --worktree-attributes master

Você verá que o .github sumiu do zip.

Comandos para desenvolvedores

Se você criou seu próprio projeto, esses comandos podem ser muito úteis:

Usuários e senhas

Salvar o nome e o endereço de email de quem ASSINA o commit. Não confundir com usuário e senha:

$ git config --global user.email seunome@email.com
$ git config --global user.name seunome

Salvar os certificados de usuário e senha por 15 minutos de forma segura:

$ git config --global credential.helper cache

Salvar os certificados de usuário e senha por 1 hora de forma segura:

$ git config --global credential.helper 'cache --timeout=3600'

Esses dois comando acima facilitam o trabalho: você não tem que ficar digitando usuário e senha toda vez que enviar uma atualização do seu projeto pro GitHub.

Salvar os certificados de usuário e senha para sempre, de forma NÃO segura:

$ git config --global credential.helper store

Atualizar pasta, ver e enviar mudanças

Atualizar sua pasta em relação ao repositório online:

$ git pull

Ver modificações que você fez no projeto, mas ainda não enviou:

$ git status

Adicionar texto informativo das modificações feitas no commit. Depois de criado não pode mais fazer atualizações, tem que enviar pro GitHub.

$ git commit -a

Depois de usar o "git commit -a", você pode enviar as mudanças pro GitHub:

$ git push

Manipulação de arquivos

Para adicionar arquivos ou pastas ao projeto não basta criá-los, você tem de dizer ao git que eles estão sendo adicionados, do contrário não serão nem enviados ao GitHub:

$ git add nome-do-arquivo-ou-pasta

Apagar arquivos ou pastas:

$ git rm nome-do-arquivo-ou-pasta

Renomear arquivos ou pastas:

$ git mv nome-velho nome-novo

Errei, e agora?

Muda o texto informativo do ÚLTIMO commit. O "git status" não deve ter outras atualizações na fila:

$ git commit --amend
$ git push --force

Melhor evitar usar os próximos dois comandos, porque mudar um commit antigo pode prejudicar outros usuários que clonaram ou fizeram forks de seu projeto.

Para mudar o texto informativo de um commit específico, e não apenas o último, você deve saber o código do commit. No site do projeto GitHub, clique em "commits", do lado direito do commit tem um botão de copiar, que copia o código para a área de transferência:

$ git commit --amend
$ git push --force numero-do-commit

Para desfazer um commit enviado erroneamente e retornar a um commit especificado você faz a mesma coisa, dá pra voltar várias versões, mas você VAI PERDER TUDO que estiver entre a versão atual e a versão que você quer restaurar.

$ git reset --hard numero.do.commit
$ git push --force

Estudo profundo

Tem muito mais possibilidades, digite git --help para mais opções, e man git se ainda precisar de mais ajuda.

Não é necessário usar o git, você pode usar o próprio navegador, que é bem simples. Eu gosto da linha de comando, então essa é minha escolha.

Nenhum comentário:

Postar um comentário