[[Git]] É um sistema de controle de versão gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes, com velocidade e eficiência. **:: Referência ::** [git (git-scm.com)](https://git-scm.com/) # Links Úteis * [[Brief Introduction to Git For Beginners - Github]] - Vídeo de introdução à ferramenta. # Comandos Básicos ```Bash Git Config - -Global User.Name "<Sername>" # Define um usuário GIT CONFIG--global user.email "<mail>" # Define o e-mail do usuário git init # Inicia um repositório Git git status # Verifica os arquivos que foram modificados, adicionados, etc. git add <file/s># Adiciona arquivos à área de preparação git COMMIT -M MESSAGE # Armazena a versão da área de preparação no histórico de alterações do GIT git clone <URL> # Recupera arquivos de um repositório online para um repositório local. git checkout -b <Branch Name> # Cria uma nova branch e muda para ela. git switch <branch name> # Muda para a branch indicada. git push <Remote> <Branch> # Envia modificações de um repositório local para um repositório remoto. git pull # Recupera todas as modificações do repositório remoto para o repositório local. git show # Apresenta todas as modificações que acontecem na branch utilizada. ``` # Conceitos Básicos Aqui estão os conceitos básicos para usar [[Git]]. - Repositório - Este é um local onde armazenaremos todos os arquivos relacionados a um projeto específico. Eles podem ser remotos (armazenados online no [[GitHub]], por exemplo) ou locais (armazenados em seu computador). - Ramificação - é uma das formas possíveis - Área de Preparação ou Staging Area - É aqui que as modificações e arquivos que queremos rastrear são alocados antes de serem enviados. - Commit - Envia as modificações feitas e definidas na área de preparação para o histórico do [[Git]]. - Push - Envia as modificações do repositório local para um repositório remoto. - Pull - Recebe as modificações de um repositório remoto em um repositório local. # Conflitos de Mesclagem no Git Um problema que pode surgir ao trabalhar com GIT, especialmente quando você está colaborando com outras pessoas, é algo chamado **Conflito de Mesclagem**. Um conflito de mesclagem ocorre quando duas pessoas tentam alterar um arquivo de maneira conflitante entre si. Isso geralmente ocorrerá quando você usar `git push` ou `git pull`. Quando isso acontece, o GIT alterará automaticamente o arquivo para um formato que descreve claramente o conflito. Aqui está um exemplo onde a mesma linha foi adicionada de duas maneiras diferentes: ```python A = 1 <<<<< head B = 2 ===== B = 3 >>>> 56782736387980937883 C = 3 D = 4 E = 5 ``` No exemplo acima, você adicionou a linha `b = 2` e outra pessoa escreveu `B = 3`, e agora devemos escolher uma delas para manter. O número longo é um _hash_ que representa o Commit que está em conflito com suas edições. Muitos editores de texto, como o [[Visual Studio Code]], também fornecem destaque e opções simples como “aceitar atual” ou “aceitar entrada”, o que economiza o tempo de exclusão das linhas adicionadas acima. Outro comando GIT potencialmente útil é o `Git Log`, que fornece um histórico de todos os seus commits neste repositório. Potencialmente ainda mais útil, se você perceber que cometeu um erro, pode reverter para um Commit anterior usando o comando Git Reset de duas maneiras: - `Git Reset - -Hard <Commit>` reverte seu código exatamente como estava após o Commit especificado. Para especificar o Commit, use o Hash do Commit associado a um Commit que pode ser encontrado usando `git log`, conforme mostrado acima. - `Git Reset - -Hard Origin/Master` reverte seu código para a versão atualmente armazenada online no [[GitHub]].