Git é um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes com velocidade e eficiência.
Git é fácil de aprender e tem um desempenho extremamente rápido. Ele supera as ferramentas SCM como Subversion, CVS, Perforce e ClearCase com recursos como ramificação local barata, áreas de teste convenientes e vários fluxos de trabalho.
Inicialmente projetado e desenvolvido por Linus Torvald em 2005, Git rapidamente se tornou uma das mais populares ferramentas de controle de versão, principalmente em projetos open source.
Muito do aumento da popularida de Git se deve a plataformas como GitHub a qual vamos ver mais a frente.
Iremos adotar a plataforma GitHub para este treinamento, se trata da plataforma mais popular do mundo que utiliza Git.
O GitHub é amplamente utilizado por grande parte dos projetos open sources e também por desenvolvedores para divulgação de projetos e portifólio.
Local onde os arquivos e suas cópias ficarão armazenados. O repositório pode ser local ou remoto, podendo salvar qualquer tipo de arquivo.
Um branch é uma cópia de um repositório feito a partir de outra branch. Você pode utilizá-lo para desenvolver o seu projeto individualmente, sem alterar a branch de origem. Assim, só depois de finalizado, será combinado novamente com a branch original.
Essa função é útil, por exemplo, se você tem mais de uma opção para a finalização de um projeto. Você pode testar as opções separadamente e incluir o código definitivo só quando você decidir qual alternativa é a melhor.
Geralmente, teremos a branch principal que normalmente tem o nome de master ou main (GitHub utilizava por default o master mas passou a adotar o padrão main desde 2020) e as branchs criadas pelos colaboradores.
Um Pull/Merge Request é quando você informa aos outros membros da sua equipe que vai incorporar seu branch ao repositório original. Os colaboradores da equipe podem aceitar ou não a Pull Request.
Ao abrir essa opção é possível discutir e argumentar o seu trabalho com os cocriadores do projeto.
Após a finalização de um trabalho em um Branch, é necessário realizar o Merge, fundir a cópia e seus arquivos modificados com a branch principal do projeto. Isso pode ser feito localmente ou no caso de estarmos utilizando uma plataforma como o GitHub isso pode ser feito após análise da solicitação de Merge Request.
- Criar uma conta pessoal no GitHub
- Instalar Git Client
- Criar um novo repositório no Github
-
git config --global user.name "Seu usuario" git config --global user.email "[email protected]
-
git clone <url_repositorio>
git help
git help <comando> #Comando o qual deseja maiores informações
O comando help irá lhe mostrar qual a função de determinado comando e quais opções podem ser utilizadas junto com aquele comando.
git clone <endereco-repositorio-remoto>
O Git clone é um comando para baixar o código-fonte existente de um repositório remoto (como o Github, por exemplo). Utilizando GitHub é possível fazer o git clone por https ou ssh.
git init
Cria um novo repositório local Git. Com esse comando será criado um novo subdiretório chamado .git que contem todos os arquivos necessários de seu repositório — um esqueleto de repositório Git.
git remote add origin <endereco_repositorio>
Vincula o repositório local a um repositório remoto.
git remote
git remote -v
Exibe os repositórios remotos.
git status
Fornece todas as informações necessárias sobre o branch atual, como por exemplo ficheiros que sofreram alterações que podem ser incluídos no próximo commit.
git add <ficheiro>
git add .
Adiciona um ficheiro ou todos o ficheiros que sofreram modificações e/ou foram incluídos no próximo commit. Este comando não altera o repositório, as alterações não são salvas até fazermos um commit.
git restore --staged <ficheiro>
Remove do próximo commit ficheiro que foi incluído no próximo commit.
git restore <ficheiro>
Restaura o ficheiro para o última estado dele na Branch. Cuidado, isso irá remover todas suas alterações que não foram committed.
git reset HEAD <ficheiro>
Remove do próximo commit ficheiro que foi incluído no próximo commit. (igual ao comando git restore --staged)
git reset --hard
Retorna o repositório para o último commit na branch a qual está posicionado. Cuidado, todas as suas alterações que não foram committed serão perdidadas.
git commit -m "Mensagem explicativa da alteração realizada"
Este comando é como definir um ponto de verificação no processo de desenvolvimento, para o qual você pode voltar mais tarde se necessário. Quando é feito o git commit as alterações são confirmadas apenas no repositório local.
git push <remote> <nome-do-branch>
git push origin main
Este comando é utilizado para enviar o commit da sua branch no repositório local para uma branch em um repositório remoto.
git pull <remote>
git pull origin
git pull
Obtém atualizações do repositório remoto, quando usamos o git pull, ele recebe as atualizações do repositório remoto e aplica imediatamente as alterações mais recentes no seu repositório local.
Com branches, vários desenvolvedores podem trabalhar em paralelo no mesmo projeto simultaneamente.
Pode-se usar o comando git branch para criar, listar e excluir branches.
git branch <nome-do-branch>
Cria nova branch.
git branch
git branch --list
Lista branches.
git branch -d <nome-do-branch>
Deleta branches.
git push -u <remote> <nome-da-branch>
Replica branch para o repositório remoto.
git branch --merged
Lista branches que já foram fundidos (merged) com o master.
git branch --no-merged
Listar branches que não foram fundidos (merged) com o master.
Este é um dos comandos Git mais usados. Para trabalhar em uma branch, primeiro você precisa mudar para ela.
Usamos o git checkout principalmente para alternar de um branch para outro. Também podemos usá-lo para verificar arquivos e commits.
git checkout <nome-do-branch>
Altera árvore de trabalho para outra branch.
git checkout -b <nome-da-branch>
Cria um novo branch e fazer checkout ao mesmo tempo.
git log
Exibe histórico do repositório
git log -p -2
Exibe histórico com diff das duas últimas alterações.
git log --stat
Exibe resumo do histórico (hash completa, autor, data, comentário e qtde de alterações (+/-))
git log --pretty=oneline
Exibe informações resumidas em uma linha (hash completa e comentário)
git log --diff-filter=M -- <ficheiro>
Exibe histórico modificação de um ficheiro
Tags são utilizadas normalmente para marcar um ponto que determina a versão da aplicação, desta forma, é possível seguir na mesma branch principal e conseguir voltar para pontos de versão apenas utilizando as tags.
git tag v1.1 -m "descricao"
Cria uma tag localmente, a tag é criada na branch onde estiver no momento em que executar o comando.
git push origin <tag_name>
Criar a tag que foi criada localmente no repositório remoto.
git push origin --tags
Cria todas as tags locais no repositório remoto.
O git merge permite fazer um merge entre duas branch.
git merge <branch_a_realizar_merge>
Para realizar o merge, é necessário estar no branch que deverá receber as alterações. O merge pode acontecer de forma automática ou exigir uma ação manual. O merge automático será feito em arquivos textos que não sofreram alterações nas mesmas linhas, já o merge manual será feito em arquivos textos que sofreram alterações nas mesmas linhas, onde será necessário intervenção e realização de um novo commit após esta intevenção.