Esse repositório é um material de apoio do Workshop "Git e Github: do Zero ao Push" ministrado na Semana de Imersão 2023.2 da Cesar School em Recife-PE.
É possível conferir o conteúdo da palestra no link ao lado: Slides da palestra
Em caso de dúvidas optem por conferir a documentação oficial do git. Pode parecer complexo no início mas é algo muito rotineiro na vida do desenvolvedor de software. Quanto antes se pegar o jeito com as documentações melhor:
Documentação oficial do git: Git Docs
Então vamos para a parte prática!
Transforma a pasta escolhida em um repositorio git
git init
Clona um repositorio já existente
git clone chave_HTTP NomeDaPastaQueVoceQuer
Caso haja qualquer alteração nos arquivos do repositório remoto, serão puxadas para nosso computador
git pull
Nesse caso, vamos precisar de 3 comandos super simples
Adiciona o arquivo ao nosso "setor de mudanças" (staging area) que iremos enviar para o repositório remoto. (Aqui vai uma dica: se usar um . no lugar do nome do arquivo irá adicionar todos os arquivos alterados)
git add nome_do_arquivo
O commit vai agrupar todos os arquivos que estão no nosso "setor de mudanças" e colocar um nome neles. (A mensagem do commit é muito importante para que outras pessoas possam entender do que se trata aquele commit)
git commit -m "mensagem do commit"
Envia seus commits para o repositório remoto.
git push
Caso seja a primeira vez que você está enviando seus commits para o repositório remoto, será necessário usar o comando abaixo:
git push --set-upstream origin main
Sempre que for configurar seu ambiente git em um novo computador é necessario fazer algumas configurações iniciais. Abaixo segue uma lista com os comandos mais importantes:
Lista todas as configurações atuais
git config --global --list
Para setar seu nome do usuário
git config --global user.name "seu nome"
Para setar o email do usuário. (O email da sua conta do github)
git config --global user.email "seu email"
Branchs são como novas linhas do tempo onde é possivel alterar o código sem mexer na branch main. É muito útil para quando você quer testar algo novo sem alterar o código principal do projeto.
Cria uma nova branch a partir da branch atual
git checkout -b nome_da_nova_branch
Troca para a branch escolhida
git checkout nome_da_branch
Apaga a branch escolhida
git branch -D nome_da_branch
Mescla 2 branchs. Tendo a branch que você está como branch de destino e a branch que você quer mesclar como branch de origem
git merge branch_de_origem
Lista todas as branchs
git branch
Lista todos os commits feitos no repositório. Com isso você pode ver o hash de cada commit e usar ele para fazer outras operações (OBS: Use "q" para sair do modo de visualização)
git log
Compara seu repositório local com o remoto e identifica quais as alterações que você fez
git status
Mostra as alterações linha a linha dos arquivos modificados e ainda não foram adicionados ao staging area. (OBS: Use "q" para sair do modo de visualização)
git diff
Existem também algumas variações do comando, por exemplo:
- Compara 2 branchs
git diff branch1 branch2
- Compara 2 commits
git diff commit_hash1 commit_hash2
- Em vez de mostrar as diferenças linha a linha mostra apenas o nome dos arquivos alterados. (pode ser usado em conjunto com as outras variações)
git diff --name-only
Remove todos os arquivos da área de preparação (staging area), permitindo que você repense quais alterações deseja incluir no próximo commit.
git reset HEAD
Descarta todas as alterações dos arquivos que foram alterados no seu repositório local, permitindo que você volte ao estado do último commit do repositório remoto. Você pode subustituir o nome do aquivo por . e isso acontecerá com todos os arquivos (OBS: Use com cuidado pois não tem como recuperar os arquivos depois)
git restore nomeDoArquivo
Existem situações em que precisamos voltar para um commit anterior. Para isso podemos usar o comando abaixo. (OBS: Use com cuidado pois não tem como recuperar os arquivos depois)
git reset --hard commit_hash
Ao utilizar o git é bem prático utilizar comandos de linha (command lines) do sistema operacional para criar pastas e arquivos e navegar por eles. Abaixo segue um link com um resumo direto ao ponto sobre esses comandos:
Se você tiver qualquer dúvida ou sugestão, não hesite em entrar em contato com a gente!
Lucas Gabriel
Cristina Matsunaga