O que é Git
Criado pelo Linus Torvalds, em 2005 para o desenvolvimento do Kernel do Linux veja a hitória completa na talk Linus Torvalds on Git.
{%youtube 4XpnKHJAok8 %}
Git != GitHub
GitHub trata-se de uma interface para a criação e administração de repositórios GIT, alem de adicionar algumas funcionalidades como os Merge Requetes e os Pull Requests de forma mais simples do que apenas pelo terminal.
Alternativas
bitbucket | Gitlab
Versionamento Semântico
O formato padrão para uma tag é ++Major.Minor.Patchs++, sendo:
- Major => Representa a versão principal do projeto;
- Minor => Representa as adições de novas funcionalidades;
- Patchs => Representa correções de bugs no sistema.
Veja mais em: semver.org
Convencional Commit
Convenção baseada no Versionamento Semântico definindo regras para a criação de um histórico de commits deixando mais explícitos o que está sendo modificado.
Veja mais em: conventionalcommits.org
Exemplos:
<tipo>[escopo opcional]: <descrição>
[corpo opcional]
[rodapé opcional]
----
Feat(translate): adiciona tradução para inglês
Feat(translate): adiciona tradução para espanhol
++Changelog++ é o arquivo que contem o histórico das alterações de cada versão
## [1.1.0] - 2020-06-20
## Added
- adiciona tradução para inglês
- adiciona tradução para espanhol
## [1.1.1] - 2020-06-20
### Fixed
- Resolvido erro de timeout
Usando Git
- git init
- git add
- git commit
- git rebase
- git reset
- git push
git reset
Utilizando o --soft possibilita a reorganização da árvore de commits.
git reset --soft d60329e
git add
O add nos permite adicionar todos os arquivos alterados ou para melhor organização adicionar apenas 1 ou mais arquivos específicos. Além disso permite também selecionar parte da modificação de um arquivo.
git add --all
git add -p <arquivo>
GitHub Actions
Primeiro precisamos criar o diretório ==.github/workflows/==, dentro dele podemos adicionar as actions necessárias para nosso sistema. Como por exemplo o Teste e o Deploy.
Teste
name: Test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
node-version: 12
- name: Install dependencies
run: npm install
- name: Run tests
run: npm run test
Deploy
name: Deploy
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Push to server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: 22
KEY: ${{ secrets.SSHKEY }}
script: cd /var/www/blog-cpantiguidade && git pull && npm run build
Automatizando o trabalho
----
~/.gitconfig
Podemos ter em nosso config do git algumas configurações que nos ajudam no dia a dia.
[branch]
autosetuprebase = always
[merge]
ff = no
commit = no
[pull]
rebase = preserve
[push]
default = current
Além das configurações podemos ter atalhos para os comando mais utlizados.
[alias]
c = checkout
a = add
s = status
p = pull
r = rebase