Seu primeiro repositório


Normalmente você chega até aqui por um de dois caminhos. Ou você já tem uma pasta de projeto, um weather-app que vem construindo localmente, e quer que o Git comece a registrar seu histórico. Ou alguém já construiu o projeto, ele está no GitHub, e você quer sua própria cópia de trabalho na sua máquina. Os dois caminhos começam com três comandos pequenos, e ao final deste capítulo você terá usado os três de verdade. Antes disso, porém, uma verificação que leva dez segundos: garantir que o Git está instalado na sua máquina.
Você tem o Git instalado?
Tudo neste manual acontece no terminal, então o primeiro passo é abrir um. Um terminal é um aplicativo onde você digita comandos como texto e os programas respondem em texto. Ele já está no seu computador:
- macOS: o aplicativo se chama Terminal. Pressione Cmd+Espaço, digite "terminal" e pressione Enter.
- Windows: por enquanto, abra o PowerShell (procure por "powershell" no menu Iniciar). Ao instalar o Git mais abaixo, você também instala o Git Bash, um terminal feito exatamente para isso, e qualquer um dos dois executa os mesmos comandos do Git.
- Linux: procure um aplicativo chamado Terminal ou Console; em muitas distribuições, Ctrl+Alt+T o abre.
O próprio Git é um programa de linha de comando: ele não tem janela própria, e você o usa digitando comandos que começam com a palavra git e lendo o que ele imprime como resposta. É assim também que se lê todo bloco de código deste manual: a linha que começa com $ é o comando que você digita (sem o $ em si), e as linhas abaixo dela são a resposta do Git.
Então, vamos à verificação. Digite isto no seu terminal e pressione Enter:
$ git --version
git version 2.45.1Se um número de versão aparecer, o Git está instalado e você está pronto para seguir. Seu número provavelmente será diferente deste, e isso não tem problema. Se, em vez disso, aparecer "command not found" ou "git is not recognized", o Git ainda não está na sua máquina, e instalá-lo é uma tarefa que você faz só uma vez:
- macOS: executar
git --versionnormalmente abre uma janela oferecendo instalar as Command Line Tools da Apple. Aceite, e o macOS instala o Git para você. - Windows: baixe o Git for Windows em git-scm.com/downloads e execute o instalador. As opções padrão são todas escolhas razoáveis, e o Git Bash é instalado junto.
- Linux: instale o pacote
gitcom o gerenciador de pacotes da sua distribuição, por exemplosudo apt install gitno Ubuntu e no Debian.
Depois que a instalação terminar, feche seu terminal, abra um novo e execute git --version de novo. Um número de versão significa que você terminou essa configuração de uma vez por todas; nada mais no resto deste manual exige instalação.
git --version mostra se ele está na sua máquina: um número de versão significa que você está pronto, e "command not found" significa que você precisa instalá-lo em git-scm.com ou pelo instalador do seu sistema. Você só faz essa parte uma vez. A configuração é a parte menos divertida de qualquer manual, então parabéns por ter passado por ela! Transformando uma pasta em repositório
Abra um terminal e entre na pasta do seu projeto com cd (abreviação de "change directory"), depois execute um único comando, git init:
$ cd weather-app
$ git init
Initialized empty Git repository in /Users/mara/projects/weather-app/.git/Essa pasta agora é um repositório: um projeto que o Git monitora, pronto para registrar instantâneos dele conforme você trabalha. O git init faz sempre a mesma coisa. Ele procura por uma pasta oculta chamada .git, cria uma se ela não existir, e a partir daí a pasta passa a ser acompanhada pelo Git.
O branch padrão de um repositório novo se chama main. Se você cair em um tutorial mais antigo, um repositório mais antigo, ou um curso gravado alguns anos atrás, vai ver master sendo usado para exatamente a mesma coisa: é o mesmo primeiro branch, só que com um nome mais antigo. Este manual sempre usa main.
O que é um branch?
Um branch é uma linha separada de histórico onde seus commits podem ficar, e main é aquele com o qual todo repositório novo começa. Branches explica como criá-los e alternar entre eles.
git init transforma qualquer pasta em um repositório Git, pronto para o Git começar a rastreá-la. Execute uma vez dentro de uma pasta de projeto e está tudo certo, e executá-lo de novo depois não causa dano nenhum. Repositórios novos usam por padrão um branch chamado main, embora repositórios mais antigos que você encontrar por aí costumem chamar isso de master. Dizendo ao Git quem você é
Antes do seu primeiro commit, o Git quer saber quem está fazendo ele. Defina dois valores uma vez, e o Git vai lembrar deles para todo commit que você fizer nessa máquina:
$ git config --global user.name "Mara Chen"
$ git config --global user.email "[email protected]"Todo commit que você criar recebe esse nome e esse e-mail. Pule essa etapa, e o Git recorre a algo deduzido a partir do nome de usuário e do hostname do seu computador, então seus commits carregam uma identidade que você nunca escolheu.
Defina seu nome e e-mail antes do seu primeiro commit. Se você fizer o commit primeiro e configurá-los depois, o erro fica cravado no histórico daquele commit. Pior ainda, alguns serviços de hospedagem (o GitHub incluído) associam commits à sua conta pelo e-mail, então um commit feito com o endereço errado ou um deduzido automaticamente aparece como trabalho de um estranho anônimo, em vez de seu.
git config --global user.name e git config --global user.email definem o nome e o e-mail que o Git registra em todo commit que você faz. Defina-os antes do seu primeiro commit, porque um commit feito antes de você definir o e-mail fica atribuído a uma identidade deduzida, e um serviço como o GitHub pode nem conseguir associá-lo à sua conta. Faça isso uma vez, e todo repositório na sua máquina vai lembrar. Copiando um projeto existente com git clone
Às vezes o projeto já existe em outro lugar, e você quer uma cópia de trabalho dele na sua máquina. O git clone faz isso em um único comando:
$ git clone https://github.com/octocat/Hello-World.git
Cloning into 'Hello-World'...
remote: Enumerating objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.O Git cria uma nova pasta chamada Hello-World, baixa o histórico completo do projeto para dentro dela, e coloca seus arquivos na pasta para que você já possa começar a ler ou editar. Não é preciso um git init separado. O clone já configura o repositório para você como parte do download.
git clone <url> baixa o repositório de outra pessoa, histórico completo incluído, para dentro de uma nova pasta com o nome do projeto. Use-o quando o projeto já existir em algum lugar; use git init quando estiver começando um do zero. Depois que o clone termina, você tem uma cópia de trabalho completa, pronta para ser explorada ou receber novas mudanças. O que tem dentro da pasta oculta .git
Todo repositório, seja ele criado com git init ou com git clone, tem uma pasta oculta chamada .git na sua raiz. Ela fica oculta por padrão, então peça ao terminal a listagem completa com ls -a (o ls lista o conteúdo de uma pasta, e o -a inclui os itens ocultos) para vê-la ao lado dos seus arquivos normais de projeto:
$ ls -a
. .. .git README.md srcEssa pasta é o repositório de fato. Ela guarda todo commit que você já fez, seus branches e as configurações da seção anterior. Exclua a pasta .git e o projeto perde todo o seu histórico, voltando a ser uma pasta comum que o Git não rastreia mais. Tudo o mais no projeto é uma cópia de trabalho do que está guardado em .git.
.git na sua raiz, e essa pasta é o repositório de fato: todo o seu histórico e suas configurações vivem ali. Execute ls -a dentro de um projeto para vê-la, já que ela é oculta por padrão. Nunca a exclua, a menos que você realmente queira apagar todo o histórico do projeto, já que excluí-la transforma a pasta de volta em uma pasta comum que o Git não rastreia mais. Se os termos repositório e commit ainda parecem meio vagos, What is Git explica o modelo mental sobre o qual esses comandos se apoiam, e o Glossário tem uma definição curta para cada termo deste capítulo. Depois que sua identidade estiver configurada e você tiver um repositório para trabalhar, O ciclo do commit explica o ciclo do dia a dia de editar, preparar (stage) e fazer commit que você vai usar constantemente a partir daqui.

