## Noções Básicas de GIT para Iniciantes em Desenvolvimento Web 👶 ## O que é `Git`? 1. Git é um sistema de controlo de versões distribuído. 2. Todo o código e histórico estão disponíveis no computador de cada programador, o que permite uma fácil criação de ramificações (branches) e fusões (merges). 3. É utilizado como Sistema de Controlo de Versões (VCS) para rastrear alterações em ficheiros de computador. * Controlo de versões distribuído * Coordena o trabalho entre vários programadores * Regista quem fez alterações e quando * Permite reverter alterações a qualquer momento * Repositórios locais e remotos ## CONCEITOS DO GIT * Mantém o histórico do código * Tira "instantâneos" (snapshots) dos seus ficheiros * Você decide quando tirar um instantâneo ao fazer um "commit" * Pode visitar qualquer instantâneo a qualquer momento * Pode preparar (staging) ficheiros antes de fazer o commit ### Diferença Entre Git e GitHub | Git | GitHub | | ------- | ----------- | | Git é um software | GitHub é um serviço na nuvem | | Git é instalado localmente no sistema | GitHub está hospedado na web | | É uma ferramenta de linha de comandos | É uma interface gráfica | | Git é mantido pelo Linux | GitHub é mantido pela Microsoft | | Focado no controlo de versões e partilha de código | Focado na hospedagem centralizada de código-fonte | | Git é licenciado como open-source | GitHub inclui um plano gratuito e um plano pago | | Git foi lançado em 2005 | GitHub foi lançado em 2008 | ## Instalação do GIT * Linux (Debian) `$sudo apt-get install git` * Linux (Fedora) `$sudo yum install git` * [Descarregar](http://git-scm.com/download/mac) para Mac * [Descarregar](http://git-scm.com/download/win) para Windows ### Passos do Processo de Instalação: 1. 2. 3. 4. 5. 6. E depois continue em Seguinte > Seguinte > Seguinte > Instalar 7. ### Após a Instalação, é necessário configurar o Git usando o Git Bash 1. `git config --global user.name 'OSeuNome'` 2. `git config --global user.email 'OSeuEmail'` ___ ## Comandos Git ___ ### Obter e Criar Projetos | Comando | Descrição | | ------- | ----------- | | `git init` | Inicializar um repositório Git local | | `git clone ssh://git@github.com/[username]/[repository-name].git` | Criar uma cópia local de um repositório remoto | ### Instantâneos Básicos | Comando | Descrição | | ------- | ----------- | | `git status` | Verificar o estado | | `git add [file-name.txt]` | Adicionar um ficheiro à área de preparação (staging) | | `git add -A` | Adicionar todos os ficheiros novos e alterados à área de preparação | | `git commit -m "[commit message]"` | Fazer commit das alterações | | `git rm -r [file-name.txt]` | Remover um ficheiro (ou pasta) | | `git push` | Enviar para o repositório remoto | | `git pull` | Obter as alterações mais recentes do repositório remoto | ### Ramificação e Fusão | Comando | Descrição | | ------- | ----------- | | `git branch` | Listar ramificações (o asterisco indica a ramificação atual) | | `git branch -a` | Listar todas as ramificações (locais e remotas) | | `git branch [branch name]` | Criar uma nova ramificação | | `git branch -D [branch name]` | Eliminar uma ramificação | | `git push origin --delete [branch name]` | Eliminar uma ramificação remota | | `git checkout -b [branch name]` | Criar uma nova ramificação e mudar para ela | | `git checkout -b [branch name] origin/[branch name]` | Clonar uma ramificação remota e mudar para ela | | `git branch -m [old branch name] [new branch name]` | Renomear uma ramificação local | | `git checkout [branch name]` | Mudar para uma ramificação | | `git checkout -` | Mudar para a última ramificação utilizada | | `git checkout -- [file-name.txt]` | Descartar alterações num ficheiro | | `git merge [branch name]` | Fundir uma ramificação na ramificação ativa | | `git merge [source branch] [target branch]` | Fundir uma ramificação numa ramificação alvo | | `git stash` | Guardar alterações num diretório de trabalho sujo | | `git stash clear` | Remover todas as entradas guardadas | ### Partilhar e Atualizar Projetos | Comando | Descrição | | ------- | ----------- | | `git push origin [branch name]` | Enviar uma ramificação para o repositório remoto | | `git push -u origin [branch name]` | Enviar alterações para o repositório remoto (e lembrar a ramificação) | | `git push` | Enviar alterações para o repositório remoto (ramificação lembrada) | | `git push origin --delete [branch name]` | Eliminar uma ramificação remota | | `git pull` | Atualizar o repositório local para o commit mais recente | | `git pull origin [branch name]` | Obter alterações do repositório remoto | | `git remote add origin ssh://git@github.com/[username]/[repository-name].git` | Adicionar um repositório remoto | | `git remote set-url origin ssh://git@github.com/[username]/[repository-name].git` | Definir a ramificação de origem de um repositório para SSH | ### Inspeção e Comparação | Comando | Descrição | | ------- | ----------- | | `git log` | Ver alterações | | `git log --summary` | Ver alterações (detalhado) | | `git log --oneline` | Ver alterações (resumido) | | `git diff [source branch] [target branch]` | Pré-visualizar alterações antes de fundir | --- **Aviso**: Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, é importante notar que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.