gustavo

git offline

2026-06-07·
software

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:

  1. o git é eficiente em espaço porque não grava as diferenças entre cada arquivo (diffs). ele comprime cada arquivo em blobs (evita deduplicação) e periodicamente o git agrupa os blobse calcula a diferença para armazenar
  2. cada commit é como se fosse uma foto do repositório inteiro. os diffs sã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:

  1. modified: arquivo modificado;
  2. staged: arquivo na área de preparo - apesar de tudo ser revirado, apenas o que está 'no palco' irá para o próximo passo;
  3. 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

  1. tu modifica um arquivo → modified
  2. git addstaged
  3. git commit → registrado no histórico
  4. se errar, git commit --amend reescreve o último commit

tudo isso funciona offline. o git não precisa de conexão pra trabalhar com o histórico local.

← Referências vinculadas (2)

Grafo local

git offlinegitsagan até que ...paralisia por ...git offlinedesenvolviment...