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