git offline
o git permite que a gente trabalhe de maneira offline e git-online.
primeiramente, vamos abordar a maneira offline. uma vez que tu clona o repositório para a máquina, TODO o histórico do repositório é armazenado.
com isso, é possível realizar uma série de comandos para modificar o repositório localmente.
alguns dos comandos que serão abordados são: log, add, commit, commit --amend, diff.
um pouco antes de adentrar nos conceitos de cada comando, é importante estar atento aos seguintes pontos:
- o git é eficiente em espaço porque não grava as diferenças entre cada arquivo (
diffs). ele comprime cada arquivo emblobs(evita deduplicação) e periodicamente o git agrupa osblobse calcula a diferença para armazenar - cada
commité como se fosse uma foto do repositório inteiro. osdiffssão calculados sob demanda, comparando as fotos quando necessário.
git log
ele vai mostrar as fotos do repositório.
$ git log
diff --git a/content/desenvolvimento-de-software.md b/content/desenvolvimento-de-software.md
index 6eeb535..285fe12 100644
--- a/content/desenvolvimento-de-software.md
+++ b/content/desenvolvimento-de-software.md
@@ -13,4 +13,6 @@ nesse contexto, eu pretendo deixar abaixo alguns conhecimentos que vou adquirind
1. [git](/post/git)
2. [sagan-ate-que-sabia-algo](/post/sagan-ate-que-sabia-algo)
-3. [paralisia-por-analise](/post/paralisia-por-analise)
\ No newline at end of file
+3. [paralisia-por-analise](/post/paralisia-por-analise)
+4. [git-offline](/post/git-offline)
\ No newline at end of file
esse log tá mostrando que adicionei mais 1 tópico na enumeração do arquivo de desenvolvimento-de-software.
git diff
mostra as mudanças que ainda não foram commitadas. útil pra revisar antes de fazer add ou commit.
$ git diff # mostra mudanças não staged
$ git diff --staged # mostra o que já foi adicionado
git add
esse comando move arquivos da área modified para staged. é tipo escolher qual mudança vai pro próximo commit.
$ git add arquivo.txt
$ git add . # adiciona todos os arquivos
só o que está em staged vai entrar no commit.
git commit
os arquivos podem estar em três estágios:
- modified: arquivo modificado;
- staged: arquivo na área de preparo - apesar de tudo ser revirado, apenas o que está 'no palco' irá para o próximo passo;
- commit: o desenvolvedor se 'compromete' com o código
há também o status untracked - que o git não se preocupa - nem todo arquivo é relevante pro projeto.
agora tu confirma as mudanças. criando um novo snapshot do repositório.
$ git commit -m "mensagem do commit"
a mensagem descreve o que mudou nessa foto do repositório.
git commit --amend
às vezes tu quer corrigir o último commit - seja a mensagem ou os arquivos que entraram nele.
$ git commit --amend -m "mensagem corrigida"
isso reescreve o último commit em vez de criar um novo.
resumo dos estados
- tu modifica um arquivo → modified
git add→ stagedgit commit→ registrado no histórico- se errar,
git commit --amendreescreve o último commit
tudo isso funciona offline. o git não precisa de conexão pra trabalhar com o histórico local.