[GIT] Conceitos Importantes - Aula 1
Git
O Git é uma ferramenta para controle de versões, o que significa que o Git serve não apenas para fazer backup dos seus códigos, mas também para guardar todas as versões do seu código, permitindo que você transite entre elas de maneira prática.
Github
O GitHub é onde você hospeda o seu código, enviando-o por meio do Git. Mas não é só isso, o GitHub também funciona como uma rede social de código, onde vários programadores podem visualizar o seu código e contribuir com ele (desde que você mantenha seu repositório público). Além disso, o GitHub é muito útil para analisar o código de outros desenvolvedores mais experientes, oferecendo a possibilidade de clonar esses repositórios (Fork) para que você possa testá-los e estudá-los na sua máquina.
KeyWords
Commit = Um commit é como um checkpoint, ele salva o seu código da maneira em que se encontra, permitindo que você possa retornar aquele estado, um commit geralmente vem com uma mensagem que resume as alterações realizadas.
Fork = Fork é basicamente uma cópia do projeto original, totalmente independente, ou seja, é uma cópia sua onde você pode alterar e testar tudo que quiser, sem se preocupar em bagunçar o código principal, é quase como um playground, geralmente é feita usando o comando Git clone.
Branch = O versionamento no Git segue uma única linha do tempo. Entretanto, para fins de segurança, precaução e testes, é possível criar uma ramificação dessa linha principal (Main). Essa nova linha do tempo paralela é chamada de Branch. Grandes projetos podem possuir diversas Branchs que após a conclusão podem ser fundidas à Main (Merge).
Merge = O merge serve para fundir uma Branch à Main. O Git faz a análise das alterações e verifica se há conflitos com o código da Main. Em caso de conflitos o Git gera uma mensagem informando o problema, caso não haja conflitos, o conteúdo da Branch é inserido na Main.
Pull Request (PR) = O PR é uma solicitação de contribuição para um projeto. Os códigos Open Source do Github, aceitam contribuições de terceiros, após feito o código da contribuição, é necessário enviar um PR, para que o autor do projeto possa analisar a sua contribuição, caso o seu PR seja aceito, é feito um Merge na Main do projeto, e o seu nome entra na lista de Contributors na página do Github do projeto.
.GitIgnore = O .gitignore é um arquivo no seu projeto que funciona como uma lista de arquivos ou pastas que devem ser ignorados no momento do envio para o Github. Todos os arquivos que estiverem nessa lista não serão incluídos no repositório. Ele recebe esse nome porque o arquivo deve ser nomeado como .gitignore, fazendo com que o Git o ignore automaticamente.
Tag = Uma Tag é uma referência a um commit específico no histórico, as Tags sao usadas para marcar pontos importantes.
Cherry-Pick = O Cherry-Pick serve para aplicar um commit específico de um Branch em outra Branch, diferentemente do Merge que aplica todos os commits, o Cherry-Pick te permite selecionar um commit específico.
Rebase = O Rebase aplica mudanças de uma Branch sobre outra (geralmente a Main). O Rebase transplanta os commits de uma Branch em outra, criando um histórico de commits mais limpo e linear, diferentemente do Merge que cria um Merge Commit para mesclar as alterações, o que pode poluir o histórico (Log).
Staging Area = Local onde ficam os arquivos que estão prontos para receber o Commit, todos os arquivos da Staging Area entrarão no próximo Commit.
Tip = Se refere ao último Commit de uma Branch.
Merge Commit = Um Merge Commit é um Commit gerado automaticamente após realizar um Merge de uma Branch na outra, esse Commit contém todas as alterações da Branch que está sendo mesclada.
Merge Base = O Merge Base é o Commit onde foi realizada a ramificação da Branch, também chamado de o melhor ancestral em comum, ou seja, o ponto de inflexão da Branch.
HEAD = é um ponteiro especial que sempre aponta para o Commit atual ou Branch atual no qual você está trabalhando.
PAT = Token de Acesso Pessoal (Personal Access Token), geralmente usado como verificação para fazer Clone em um repositório privado.
Status
Untracked = Não encontrado pelo Git.
Staged = Marcado para ser incluído no próximo commit.
Committed = Salvo no histórico do repositório.
Cheque o Status do seu repositório com:
git status
Untracked vs Unstaged
Untracked: Arquivos que existem no diretório de trabalho, mas que não foram adicionados ao controle de versão pelo Git. Eles não estão incluídos nos Commits e não aparecem no histórico do Git até que sejam explicitamente adicionados.
Unstaged: Arquivos que já estão sendo rastreados pelo Git (já foram adicionados e Commitados pelo menos uma vez), mas que foram modificados após o último Commit e não foram adicionados à Staging Area para o próximo Commit.