Git
Git
Git é um sistema de controle de versões distribuído, usado principalmente no desenvolvimento de software, mas pode ser usado para registrar o histórico de edições de qualquer tipo de arquivo.
Funcionalidades
Histórico
- Alternar entre as versões
- Saber que existe um "plano B" caso as alterações não deem certo
Trabalho em equipe
- Desenvolvimento em paralelo em diferentes ambientes
Ramificação
- Possibilidade de criar várias versões a partir de um ponto
- Juntar as funcionalidades/mudanças após finalizadas
Rastreabilidade
- Identificar em que ponto a mudança foi feita
- Identificar o responsável pela mudança
Tipos de controle de versão
Centralizado
- Servidor centralizado que possui todo o histórico
- Padrão durante muitos anos
Distribuído
- Cada computador possui uma cópia do repositório
- Alterações rápidas e locais
- Réplica de repositórios caso o central se perca
Comandos Básicos
Configurações do usuário
git config --global user.name "Seu nome"
git config --global user.email "Seu email"
Caso queira ver se as suas configurações estão corretas, você pode listar elas:
git config --list
Criação de um repositório local
Primeiro, crie uma pasta para o projeto e em seguida entre na pasta via comando no terminal.
cd nomedapasta/
Para listar o que tem na pasta via comando:
dir
Inicializando o repositório:
git init
Caso precise forçar a listagem de arquivos ocultos:
dir -a
Após a criação do repositório, ele vai mostrar um master que é uma branch, ou também pode ser chamada de ramificação.
"Master" é a branch principal do projeto quando um repositório é criado.
Nesse primeiro momento, como só temos ela, ela é nossa branch base e a partir dela podemos criar novas branches.
Quando listamos os arquivos ocultos, encontramos um arquivo ".git" que guarda todas as informações do repositório, como se fosse um banco de dados.
Ainda é válido ressaltar que o repositório não precisa estar vazio para ser inicializado. Caso queira iniciar um já coma rquivos dentro é só seguir mesmos passos de anteriormente.
A partir do momento que você inicializa o repositório já se pode começar a versionar o seu projeto.
Versionamento - Adicionando Alterações
Você precisa falar pro git quais os arquivos que você quer versionar.
Para ver qual é o estado dos seus arquivos:
git status
Untracked file significa que aquele arquivo não está sendo rastreado.
Para adicionar um arquivo para ser restreado:
git add nomedoarquivo
Caso queira fazer isso com mais arquivos, por exemplo, com todos os arquivos da pasta, temos três opções:
git add --all
git add -A
git add .
Versionamento - Salvando alterações
Commit é você salvar uma nova versão do seu banco de dados local no seu git.
git commit -m "Insira a mensagem explicando o que foi feito aqui"
Funcionamento do git
Working Directory
Seria o local dos arquivos, no caso, a pasta local no seu computador.
- Arquivos
- Modificados
- Excluídos
- Adicionados
Para ir pro próximo estágio:
git add
Stagind Area (Staged)
Arquivos adicionados e preparados para serem versionados.
Próximo estágio:
git commit
Comitted
Os arquivos estão salvos.
Visualizando alterações
Diz as diferenças que ocorreram no seu repositório de trabalho e nas alterações que você tem commitado:
git diff
Para ver as diferenças no modo de preparação antes de commitar:
git diff --cached
Histórico de alterações
Comando usado para ver o histórico de todos os commits que foram feitos no seu projeto:
git log
As modificações são listadas sempre das mais recentes para as mais antigas.
O número gigante que aparece escrito após o commit no git log é um tipo de id única para o seu commit, esse número é gerado aleatóriamente e mais tarde nós poderemos usar ele.
O HEAD aponta a sua última modificações em uma branch.
O git log tem muitas configurações, vale a pena pesquisar mais. Por exemplo, o comando a baixo mostra todas as modificações em uma linha e é interessante pra quando você tem muitos commits.
git log --oneline
Usando commits anteriores
Para usar as modificações anteriores vamos utilizar aquele número escrito após o commit no git log.
git checkout insiranumero
Como esse número é muito grande você pode digitar somente os 6 primeiros, pois estes são únicos.
Quando você ver "Detached HEAD" significa que a gente pegou nosso checkout e foi para um lugar diferente do HEAD.
Para sair do commit antigo:
git checkout nomedabranch
git checkout master
Desfazendo alterações
Para desfazer as alterações feitas no git, podemos voltar o arquivo para o commit anterior:
git checkout nomedoarquivo
Entretanto, isso não funciona para arquivos adicionados, ou seja, arquivos novos no projeto.
Quando tmos muitos arquivos modificados, fica inviável usar o método acima, como solução podemos usar um comando para desfazer as alterações de todos os arquivos que estão na sua branch, onde você consegue voltar ao estado inicial:
git reset --hard
Dessa forma você volta diretamente sem precisar de uma confirmação, como um atalho, mas também pode-se fazer da seguinte forma:
git reset
git reset --hard
Desfazendo alterações não rastreadas
Para forçar a remoção de arquivos que foram adicionados:
git clean -f
O git clean também possui várias opções de comandos que vale a pena conferir.
Ignorando arquivos
Em certas situações vamos ter arquivos aos quais não queremos que sejam versionados, como arquivos gerados durante uma execução, para ignorar esses arquivos vamos criar um arquivo da extensão git ignore.
No windows:
ren a.txt .gitignore
Dentro do arquivos .gitignore nós podemos usar alguns padrões para falar para o git excluir arquivos de um certo tipo. Por exemplo: "nomedoarquivo.extensão" - para excluir um arquivo específico ".extensão" - para excluir do versionamento todos os arquivos deste tipo "nomedapasta/.extensão" - para ecluir todos os arquivos deste tipo que estão dentro da pasta "x"
No mac/linux: Use mv.
Clonando repositório
Para clonar um repositório utilizaremos o git clone, que funciona não só em urls remotas como em arquivos locais.
git clone nomedapastaclonada/ nomedanovapasta
git clone url