O Git é uma um sistema open-source de controle de versão distribuído mais popular.
O Git é usado principalmente para o desenvolvimento de software, porém pode ser usado para registrar o histórico de edições de qualquer tipo de arquivo.
Ser open-source significa que qualquer pessoa utilizá-lo e contribuir com o projeto.
Ser um controle de versão significa que você pode controlar e ver o histórico de edições de um arquivo.
Ser um sistema distribuído neste caso, significa que todos os que utilizarem em um projeto terão seu próprio repositório local com todo o histórico de versões.
Em 2002 a comunidade do desenvolvimento do kernel Linux começou a utilizar a ferramenta BitKeeper para o controle de versão.
Em 2005 a ferramenta BitKeeper começou a ser paga. Então Linux Torvalds (o criador do Linux), criou o Git baseado em lições aprendidas ao usar o BitKeeper.
Na verdade não, o Git é uma ferramenta comum para qualquer pessoa que deseja trabalhar com versões de documentos e em equipe.
O Git permite que grupos de pessoas trabalhem nos mesmos documentos (geralmente em código) ao mesmo tempo sem que um atrapalhe o outro.
Devido as descrições anteriores, sobre o Git permitir que pessoas trabalhem nos mesmos documentos ao mesmo tempo, pode ter ocasionado um mal entendido.
Se você imaginou o Git sendo um software como com Google Docs…
Houve um equívoco, a aparência do Git é algo neste estilo, um terminal.
A título de curiosidade, também existe ferramentas externas com interface gráfica, como o GitKraken.
Conhecimento de Git muitas vezes acaba sendo implícito nos requisitos das vagas de emprego.
Para ilustrar este cenário será utilizado um exemplo, que talvez tenha passado alguma vez na vida.
O Git será útil para diversos setores, no caso anterior foi demonstrado o problema que a falta de uma ferramenta de controle de versão pode causar.
Foi mostrado um caso de um aluno que estava enviando seu trabalho para um professor, e para cada revisão realizada, ele gerava uma versão nova do documento, porém percebemos que a metodologia adotada pelo aluno não foi adequada.
O exemplo anterior mostrou um caso acadêmico, no qual quem mantinha o documento era apenas o aluno, posteriormente será abordado casos no mercado de trabalho, no qual o trabalho será realizado em equipe, mas antes disso é necessário entender a estrutura do Git.
Utilizando adaptações das definições da documentação da Microsoft.
Também é conhecido como repo, é a maior unidade de armazenamento. Um repositório contém uma ou mais branches.
Uma unidade de armazenamento que contém os arquivos e as pastas que compõem o conjunto de conteúdo de um projeto.
As branches separam fluxos de trabalho (normalmente conhecidos como versões). As contribuições sempre são feitas para uma branch específica e estará naquele escopo.
Todos os repositórios contêm uma ramificação padrão (normalmente chamada “master") e uma ou mais ramificações que serão mescladas novamente na ramificação padrão.
A ramificação padrão funciona como a versão atual e é “única fonte de verdade” para o projeto. Ela é a mãe e todos as outras branches no repositório são criados a partir dela.
A aparência das ramificações é a seguinte:
Utilizando adaptações do material da Atlassian “Why Git for your organization".
Git para administradores de infraestrutura
Se estiver em um ambiente Windows, recomendo utilizar o Chocolatey para instalar o Git:
Se estiver em um ambiente Mac, recomendo utilizar o Homebrew para instalar o Git:
Se estiver em um ambiente baseado Linux baseado no Debian:
Para verificar se o Git foi instalado:
A versão ser diferente não é um problema
Se estiver usando um ambiente Windows, utilize o Git Bash que foi instalado em conjunto com o Git.
Configurando usuário
O Git não está controlando o ciclo de vida deste arquivo
O arquivo fará parte parte do próximo commit
O arquivo já foi “commitado” e não foi modificado
O arquivo já foi “commitado” e foi modificado
Para visualizar as modificações podemos usar o git diff
:
Adicionando outro arquivo
git add
git add -u: Apenas arquivos monitorados
git add .: Todos os arquivos (diretório e subdiretórios)
git add -A: Todos os arquivos (toda a árvore de trabalho)
git commit
git commit -m “descrição”: Descrições menos detalhadas
git commit: Descrições mais detalhadas
Se quisermos alterar o ultimo commit:
git log
Criando o .gitignore
Ignorando arquivos já “commitados”
Depurar o .gitignore
Restaurar arquivos da árvore de trabalho
Mudando para um commit específico
git reset
git reset –soft: Desfaz Commit. Mantem Stage e modificações
git reset –mixed: Desfaz Commit e Stage. Mantém modificações [Padrão]
git reset –hard: Desfaz Commit, Stage e modificações
git revert
git reflog
Reflogs rastreiam quando refs Git foram atualizados no repositório local.
Criando uma branch
Deletando uma branch
Alterar branch
Para criar uma branch, utilizar a flag -c
.
Realizando commits na branch
git merge
Fast-forward
No Fast-forward
git rebase
Adicionando uma tag
Para adicionar uma mensagem, utilizar a flag -m
Deletando uma tag
git stash
git stash: Apenas os arquivos monitorados
git stash -u:: Inclui também os arquivos não monitorados
git stash -a:: Inclui também os arquivos não monitorados e ignorados
Primeiro armazenamento
git stash apply
git stash pop
git stash save
git stash show
git stash -p
git stash branch
git stash drop
git stash clear
ed25519
rsa
Usar se o algoritmo ed25519
não for suportado
O objetivo dessa seção foi mostrar como gerar chaves SSH seguras, para mais informações veja o artigo do GitHub About SSH.
Se estiver em um ambiente Windows, o Git Flow já estará instalado, ele foi incluído na versão 2.5.3
do Git for Windows.
Se estiver em um ambiente Mac, recomendo utilizar o Homebrew para instalar o Git Flow:
Se estiver em um ambiente baseado Linux baseado no Debian:
Para verificar se o Git Flow foi instalado:
A versão ser diferente não é um problema
O Git Flow é um fluxo de trabalho para o Git, criado por Vincent Driessen, a partir da sua publicação A successful Git branching model no ano de 2010.