O que é?
O Git é o sistema de controle de versões mais utilizado atualmente por conta de algumas características vantajosas, como permitir uma cópia do projeto, um repositório do projeto em sua máquina, para que se possa trabalhar em cima dela e então enviá-lo para outro repositório, o que se denomina repositórios distribuídos. Isso permite o trabalho de modo offline, antes da comunicação com outro servidor para que o envio de versões, e assim por diante. Existem várias outras diferenças entre estas alternativas, e você as entenderá melhor no decorrer do curso.
Funções
Cada alteração que você faz fica gravada em um histórico, podendo ser visualizada e restaurada a qualquer instante.
Permite que a gente armazene as modificações feitas em cada arquivo em um servidor próprio para isso. Toda a gestão de alterações é feita pelo Git e nós só precisamos nos preocupar em criar código que funciona, e não em quem alterou o que antes.
Para nos identificarmos
git config --local user.name "Seu nome aqui"git config --local user.email "seu@email.aqui"
Sendo "local" para cada projeto, e "local" para a máquina toda.
Repositórios
-
git init
Inicializa um repositório do Git.
Todas as alterações que forem realizadas no arquivo localizado dentro deste repositório poderão ser mostradas pelo Git, com indicações do que foi modificado, quem modificou, quando, e por aí vai.
-
git status
Informa se está sendo rodado no ramo, ou branch master (On branch master), e se commits (No commits yet).
Também indica quando há arquivos não monitorados (Untracked files) em nosso projeto.
Informações retornadas no status:
- HEAD: Estado atual do nosso código, ou seja, onde o Git os colocou.
- Working tree: Local onde os arquivos realmente estão sendo armazenados e editados.
- index: Local onde o Git armazena o que será commitado, ou seja, o local entre a working tree e o repositório Git em si.
-
git add nomeDoArquivo.extensão
Inclui o arquivo ao que se quer "commitar".
-
git add .
Quando há vários arquivos, não precisamos colocar seus nomes um a um, bastando git add . para que todos os arquivos da pasta atual sejam monitorados.
-
git rm
Quando utilizado, este comando remove o arquivo, para que o mesmo deixe de ser monitorado pelo Git.
-
git commit -m "informação commit"
Utilizado quando queremos salvar as alterações.
O commitconsiste em um check point para indicar que houve mudança, que precisa ter modificações.
o parâmetro -m serve para passarmos uma mensagem de commit, que será incluído entre aspas.
-
clear
Limpa o terminal.
-
git log
Utilizado para verificar o histórico de alterações, cada mensagem de commits feitos, o andamento do nosso projeto, entre outros.
A primeira informação retornada é primeiro deles o hash do commit, uma identificação única de cada commit (não existem dois commits com o mesmo hash).
A informação seguinte se refere ao branch, ou "ramo" em que o commit se encontra.
Além disso, temos a autoria do commit, e-mail configurado, data de commit e mensagem.
Outras opções de comandos:
git log --oneline: permite visualizar todos os commits, sendo que cada uma ocupa uma única linha.
git log -p: fornece mais informações, como as alterações do commit (quando finalizarmos a visualização do log, basta apertar a tecla q para voltar "ao normal" em nossa linha de comando).
git log --help: exibe as opções possíveis.
git log --pretty="parametros de formatação": gera o histórico da nossa aplicação em formatos personalizados.
Git ignore
Utilizado quando não queremos que determinado arquivo seja monitorado, como no caso de um arquivo de configurações da IDE.
Trata-se de um arquivo especial do Git, chamado .gitignore, e todas as linhas que estiverem nele serão lidos e ignorados pelo Git.
Se temos um arquivo denominado ide-config que queremos que seja ignorado, por exemplo, basta o incluirmos em .gitignore, digitando ide-config simplesmente. Da mesma forma, se tivéssemos uma pasta ide, incluiríamos ide/, em uma nova linha.
Para adicionar o arquivo, utilizar "git add .gitignore", por exemplo, e 'git commit -m "Adicionando .gitignore"'.
Em que momento realizamos o commit?
O consenso é que jamais devemos commitar código que não funciona. Isto é, o código deve estar sempre no estado funcional para ser commitado. Isto não significa que ele deva ser commitado apenas ao fim do projeto. A recomendação é que se gere um commit após cada alteração significativa.
Não existe uma regra, e sim recomendações. Sempre que uma pequena funcionalidade for implementada, ou um bug for corrigido, é possível realizar um commit, para que no fim do dia, um conjunto de commits gere o sistema como um todo, e não um único commit.
Repositórios remotos
Trata-se de um servidor local para onde possamos enviar nossas alterações, que ficarão acessíveis para outras pessoas.
-
git remote
Todos os repositórios remotos que o repositório local conhece são listados.
git remote add url ou local
git remote -v: faz com que o endereço de local seja exibido.
Além disso, é indicado que os dados deste caminho serão buscados (fetch), e enviados para este mesmo caminho (push).
-
git init --bare
Parâmetro indica que este repositório é puro, que contém apenas as alterações dos arquivos, e não uma cópia física de cada um dos arquivos.
Com este comando nós criamos um repositório que não terá a working tree, ou seja, não conterá uma cópia dos nossos arquivos. Como o repositório servirá apenas como servidor, para que outros membros da equipe sincronizem seus trabalhos, poupamos espaço de armazenamento desta forma.
-
git clone
Clona o repositório, , ou seja, traz todos os dados de um repositório remoto para o nosso repositório local pela primeira vez.
git clone url ou local.
-
git push local master
Para empurrarmos as modificações, usaremos o comando git push, que não é o suficiente por si só, uma vez que não estamos sendo explícitos.
O "git push local master", e assim, serão enviados todos os dados por todos os códigos e alterações feitas até então para nosso repositório que chamamos de "local", dentro de "servidor". Após pressionarmos "Enter", teremos a mensagem de que uma nova branch (ramo) foi criada em "servidor", chamada master.
-
git pull
Traz os dados do repositório remoto para o seu repositório.
Se digitar git remote, teremos "origin". Para renomear, "git remote rename origin local" - manteremos a paridade com a nomenclatura original. Em seguida, "git pull local master" para trazer os dados.