Áreas de Trabalho no Git: Diretório de Trabalho, Área de Staging, Repositório e Repositório Remoto

As Quatro Áreas de Trabalho O Git localmante gerencia quatro áreas distintas: Diretório de Trabalho (Working Directory), Área de Staging (Stage/Index), Repositório (ou Git Directory) e Repositório Remoto (Remote Dierctory). A relação de transição entre essas áreas é a seguinte: Workspace: O diretório de trabalho, onde você normalmente mantém seus códigos de projeto. Index / Stage: A área de staging, usada para armazenar temporariamente suas modificações. Na verdade, é apenas um arquivo que mantém informações sobre os arquivos que serão incluídos no próximo commit. Repository: O repositório (ou banco de versões), onde os dados são armazenados com segurança. Contém todos os dados de todas as versões que você já submeteu. O HEAD aponta para a versão mais recente adicionada ao repositório. Remote: O repositório remoto, que é um servidor que hospeda seu código. Pode ser simplesmente considerado como um computador na sua equipe usado para troca de dados remota. ### Fluxo de Trabalho

O fluxo de trabalho típico no Git é: 1. Adicionar ou modificar arquivos no diretório de trabalho; 2. Colocar os arquivos que precisam de controle de versão na área de staging; 3. Submeter (commit) os arquivos da área de staging para o repositório Git. Portanto, os arquivos gerenciados pelo Git podem estar em três estados: modificados (modified), staged (pronto para commit) ou commitados (já no repositório). ### Quatro Estados dos Arquivos

O controle de versão lida com as versões dos arquivos. Para modificar ou submeter arquivos, é essencial entender o estado atual deles, caso contrário, você pode submeter acidentalmente arquivos que não deveriam ser submetidos ou esquecer de submeter arquivos importantes. O Git não se preocupa com as diferenças específicas entre duas versões de um arquivo, mas sim com se o arquivo como um todo foi alterado. Se um arquivo foi modificado, ao ser submetido (commit), uma nova "instantânea" (snapshot) do arquivo é criada. O método para determinar se um arquivo foi alterado é calcular o seu checksum usando o algoritmo SHA-1. Untracked: Arquivo não rastreado. O arquivo existe na pasta mas não foi adicionado ao repositório Git e não participa do controle de versão. Ao executar git add, seu estado muda para Staged. Unmodify: O arquivo está no repositório e não foi modificado, ou seja, o conteúdo do arquivo no repositório é idêntico ao da pasta. Esse tipo de arquivo pode ter dois destinos: se for modificado, torna-se Modified. Se for removido do repositório com git rm, torna-se Untracked. Modified: O arquivo foi modificado, mas nenhuma outra ação foi realizada. Esse arquivo também tem dois possíveis caminhos: com git add ele pode entrar no estado Staged, ou com git checkout as modificações são descartadas e ele retorna ao estado Unmodify. O comando git checkout recupera o arquivo do repositório e sobrepõe as modificações locais. Staged: Estado de staging. Ao executar git commit, as modificações são sincronizadas com o repositório, tornando o arquivo no repositório e o local idênticos novamente (estado Unmodify). Se executar git reset HEAD nome_do_arquivo, o staging é cancelado e o arquivo volta para o estado Modified. O diagrama a seguir ilustra bem as transições entre esses quatro estados: Novo arquivo → Untracked Comando add → Staged Comando commit → Unmodified Modificação de arquivo Unmodified → Modified Remoção de arquivo Unmodified → Untracked Comandos Comuns para as Quatro Áreas

Criando um Novo Repositório

Criar um novo repositório Git no diretório atual

git init

Criar um novo diretório e inicializá-lo como repositório Git

git init [nome-do-projeto]

Baixar um projeto e seu histórico completo

git clone [url]


</div>### Verificando o Estado dos Arquivos

<div>```

# Verificar o estado de um arquivo específico
git status [nome-do-arquivo]

# Verificar o estado de todos os arquivos
git status

Adicionar arquivos específicos para a área de staging

git add [arquivo1] [arquivo2] ...

Adicionar um diretório inteiro (incluindo subdiretórios) para a área de staging

git add [diretório]

Adicionar todos os arquivos do diretório atual para a área de staging

git add .

Remover um arquivo do staging e/ou do repositório, e também do diretório de trabalho

git rm caminho_do_arquivo

Remover um arquivo do staging e/ou do repositório, mas mantê-lo no diretório de trabalho

git rm --cached caminho_do_arquivo

Restaurar um arquivo do staging para o diretório de trabalho (sobrescreverá se já existir)

Se especificar [nome-da-branch] + nome_do_arquivo, o arquivo será recuperado da branch especificada

git checkout


</div>### Interação entre Diretório de Trabalho e Repositório

<div>```

# Mover arquivos da área de staging para o repositório
git commit -m 'Descrição desta submissão'

# Caso tenha submetido arquivos indesejados ou cometido um erro no último commit
# e não quer alterar o staging, apenas ajustar a mensagem de commit:
# Remover arquivos indesejados do staging
git reset HEAD nome_do_arquivo

# Desfazer o último commit (volta ao estado antes do add)
git reset HEAD^

# Desfazer o último commit mantendo as alterações no staging
git reset --soft HEAD^

Buscar mudanças do repositório remoto e mesclar com a branch local

git pull

Enviar a branch local para o repositório remoto

git push


</div>### Outros Comandos Úteis

<div>```

# Exibir a configuração atual do Git
git config --list

# Editar o arquivo de configuração do Git
git config -e [--global]

# Configurar e-mail e nome de usuário antes do primeiro commit
git config --global user.email "seuemail@exemplo.com"
git config --global user.name "Seu Nome"

# Acessar a documentação de ajuda do Git
git --help

# Ver a ajuda de um comando específico
git nome_do_comando --help

# Verificar a versão do Git instalada
git --version

Tags: Git controle-de-versao repositório-git staging-area workflow-git

Publicado em 6-27 03:58