Já faz um tempo que venho estudando as ferramentas de automação “Infra as code”, e venho partilhando um pouco da minha jornada de aprendizado aqui “com a serei evolução“. Durante a jornada de aprendizado deu para perceber que o código precisa estar armazenado é um repositório de fácil acesso e que permita colaboração (partilha de código, alteração, etc ).
GIT
Git é um controlador de versão muito popular no mundo dev, se não o mais popular, e mais recentemente com a tendência everything x as Code (XaC), GitOps também é usado por System engineers etc…. para partilha de documentos, scripts , código.
é um sistema de controle de versão distribuído para rastrear alterações no código-fonte durante o desenvolvimento de software.
Wikipedia
Na sua essência, Git permite trabalhar simultaneamente no código e isolar seu trabalho em branches, repositórios, ajudando a registrar alterações em ficheiros “uma espécie de linha de tempo de alterações” mantendo controle das modificações feitas nos mesmos.
Comandos git básicos que mais uso:
#instalação, dependendo do OS version
sudo apt-get install git
ou
dnf install git -y
#git config, definir autor “user” & email a ser usado nos commits
git config –global user.name “vcluster”
git config –global user.email virtualcluster@gmail.com
#inicializar/criar repositório
git init

ou
Criar copia de um repo existente
git clone https://github.com/manuh-L/manuh-L.git
#Verificar estado de ficheiros no repo/ dir de trabalho
git status

Criei 2 files na pasta e podemos ver que status mudou e pela CLI possível ver 2+

Untracked file: Significa que o file não esta no repositório git, seu histórico de alteração não esta sendo rastreado.
Staged: Alterações que vão ser adicionadas no próximo commit.
# Adicionar ficheiros a staging area
git add file1.txt manuh.txt
ou
git add *

Os files passam para staged, prontos para commited
#commit
git commit -m ‘Initial 1st commit’

#verificar histórico ou log de commits
git log

#remover ficheiro
$ git rm serial.txt
#untrack file
git rm –cached file.txt
git rm –cached terraform.tfvars terraform
#Restore
git restore –staged serial.txt
git restore serial.txt
#rename
git mv file.txt ficheiro.txt
#criar novo branch e mudar para o branch
git checkout -b feature

#Criar novo branch
git branch master
#Listar branches locais
git branch

# mudar de branch
git checkout master
#Integrar conteúdo de dois branches
git merge master feature

#adicionar repo remoto
git remote add github https://github.com/manuh-L/online.git
#listar repositórios remotos
git remote -v

#enviar/upload alterações locais para repo remoto “github” -u para definir upstream
git push -u github master
git push github feature

#remote repo github

add ficheiro examplo no repo github

#baixar ficheiros actualizados de repo remoto e integrar no repo local
git pull github master

git fetch
#point in time restore
git log
git checkout “commit id”
git checkout 9c99852a3a6bc8a2fa130c5c223e06b1dd5565e8

Git School um site que pode ajudar a perceber o git flow em algumas operações básicas.