Bitbucket: configuração e branches

O Bitbucket é um serviço de hospedagem de projetos controlados através do Mercurial, um sistema de controle de versões distribuído. Possui também serviço gratuito, o que permite você criar uma conta para testar o serviço. Por ser baseado em versionamento Git e similar ao GitHub, vale a pena a leitura do post sobre o programa no link. A Atlassian (empresa responsável pelo Bitbucket) tem um cheat sheet com os principais comandos do Git, disponível no link.

O primeiro passo para iniciar um repositório é permitir acesso do seu computador para o servidor do Bitbucket. Em seu computador, você deve copiar a chave pública. Ela é o conteúdo do arquivo “~/.ssh/id_rsa.pub” – caso não tenha a chave, execute o comando “ssh-keygen -t rsa” para criá-la. Então acesse o site, faça login e clique em seu ícone de usuário (canto inferior esquerdo) para escolher a opção “Bitbucket settings”. Então clique em “Security | SSH keys” e em adicionar. Dê um nome (pode ser o nome da sua máquina) e cole a chave pública (copiada previamente para sua área de transferência) no quadro abaixo. Para testar, execute em seu PC “ssh -T [email protected]”.

Depois, você deve criar um repositório no servidor remoto, que é onde os códigos serão alocados. Faça o login para entrar na tela inicial. Crie um projeto, se for o caso. Clique no “+” no menu à esquerda, escolha “owner” (você mesmo), “project”, coloque o nome do repositório (escolha o mesmo nome da pasta de trabalho no seu computador) e não crie arquivo descritivo (deixe para criá-lo no seu próprio computador e subir tudo depois).

No terminal do seu computador, vá para o diretório cujos códigos devem ser enviados ao Bitbucket.

Antes de subir os arquivos, é costume criar um arquivo que indique quais arquivos e/ou diretórios devem ser ignorados ao versionar seus códigos, em qualquer lugar abaixo do nível atual em uma árvore de diretórios. Para criá-lo, entre no diretório de trabalho e execute o comando “touch .gitignore”. Abra-o para edição e inclua os nomes dos diretórios que você não quer que sejam “gitados”. Se for um diretório (em qualquer lugar), adicione ‘/’ no final da linha; se for um subdiretório, inclua ‘*/’ no início; um ‘*’ considera todos os arquivos com o padrão que vier depois. Por exemplo, é costume remover o diretório “__pycache__” e os arquivos compilados “.pyc”, deixando o arquivo “.gitignore” assim:

Para iniciar o git e adicionar todos os arquivos novos, digite os seguintes comandos:

Para definir a identidade padrão da sua conta, execute (omita –global para definir a identidade apenas neste repositório):

Por fim, para conectar seu repositório existente ao Bitbucket, “comitar” os arquivos e fazer o envio:

Se você já tem alguma pasta no seu índice git que você não deseja mais acompanhar, então você precisa removê-las explicitamente. O Git não irá parar de rastrear caminhos que já estão sendo rastreados apenas porque eles agora correspondem a um novo padrão .gitignore. Para isso, execute os seguintes comandos:

Com tudo pronto, das próximas vezes que editar seu código, você pode executar somente esses comandos:

Para criar um README, use esse editor de markdown online e depois copie o texto para um arquivo local com o nome README.md. Algumas dicas para edição:

  • Sempre usar uma linha em branco para separar blocos de texto (entre título e texto)
  • Títulos começam com ‘#’ – quanto mais hashtags, mais subníveis
  • Listas usam ‘-‘ ou ‘*’, mas sempre aparecem como uma “bolinha”
  • Para forçar uma quebra de linha após o parágrafo, colocar dois espaços no final da linha
  • Linha horizontal (para separar grandes tópicos, por exemplo): – – – (espaço e traço três vezes)

Criar uma “branch”

Para trabalhar com uma nova ramificação (“new branch”), você pode primeiro criá-la na interface do GitHub/Bitbucket (no painel do repositório, clique em “Branches” no menu esquerdo e no botão “Create branch”). Ele pode ser do tipo Bugfix (usado para corrigir ramificações de releases), Feature (para trabalho de recurso específico ou melhorias), Hotfix (corrigir rapidamente um ramo de produção sem interromper as alterações no ramo de desenvolvimento/master) ou Release (versões de manutenção de longo prazo). Assim, “feature/exemplo” pode ser o nome de um novo ramo para desenvolver um novo recurso.

Exemplo de workflow com branches. Fonte: Atlassian
Exemplo de workflow com branches. Fonte: Atlassian

Você também pode criar o ramo localmente, para depois subir ao servidor. Veja esse exemplo, onde o nome do novo ramo é “NOME_DO_RAMO”:

Estando na branch, os procedimentos de adicionar e “commitar” são os mesmos, mas para subir as modificações, o comando deve conter o nome do ramo, por exemplo:

Para voltar ao branch master, basta realizar o comando “git checkout master”.

Para fazer merge de uma outra branch à master, primeiro certifique-se que a branch está com todas as alterações “comitadas” e “enviadas”, então siga os passos:

Abrindo o site, as alterações que só estavam na branch agora estão na branch master também.

Para ver uma árvore de branchs e últimos commits:

Se quiser remover algum branch, use:

Se não tiver subido a branch para o servidor de códigos, isso é suficiente; caso contrário, acesse a interface e remova manualmente. Todas as alterações realizadas nessa branch serão perdidas, restando os códigos na última versão da branch master.