1. Comandos de gerenciamento de ramos
1.1 Visualizando ramos
O repositório padrão possui apenas um ramo chamado master.
# git branch
* master
O atserisco indica o ramo atual em que você está traablhando. Quando executado git init, o Git cria automaticamente o ramo master.
1.2 Criando novos ramos
# git branch novo_ramo
# git branch
* master
novo_ramo
1.3 Alternando entre ramos
# git checkout novo_ramo
Switched to branch 'novo_ramo'
# git branch
master
* novo_ramo
1.4 Desenvolvimento no novo ramo
# ls
arquivo1.sh arquivo2.sh
# vim novo_arquivo.sh
# git add .
# git commit -m 'Adicionado novo arquivo'
[novo_ramo 123abc4] Adicionado novo arquivo
1 file changed, 1 insertion(+)
create mode 100644 novo_arquivo.sh
# ls
arquivo1.sh arquivo2.sh novo_arquivo.sh
1.5 Retornando ao ramo principal
# git checkout master
Switched to branch 'master'
# ls
arquivo1.sh arquivo2.sh
# git branch
* master
novo_ramo
Apenas ao alternar para o ramo novo_ramo é possível ver o novo arquivo.
1.6 Mesclando ramos
# git checkout master
Switched to branch 'master'
# git merge novo_ramo
Updating 567def8..123abc4
Fast-forward
novo_arquivo.sh | 1 +
1 file changed, 1 insertion(+)
create mode 100644 novo_arquivo.sh
# ls
arquivo1.sh arquivo2.sh novo_arquivo.sh
2. Conflitos em ramos
Se dois ramos modificarem o mesmo arquivo na mesma linha, ocorre um conflito durante a mesclagem.
2.1 Criando outro ramo para provocar conflito
# git checkout -b outro_ramo
Switched to a new branch 'outro_ramo'
# echo "Conteúdo do outro ramo" >> arquivo2.sh
# git commit -m 'Alteração no outro ramo'
[outro_ramo 987fed6] Alteração no outro ramo
1 file changed, 1 insertion(+)
# git log --oneline
987fed6 outro_ramo
123abc4 novo_ramo
567def8 versão inicial
2.2 Modificando o mesmo arquivo no ramo principal
# git checkout master
Switched to branch 'master'
# echo "Conteúdo do ramo principal" >> arquivo2.sh
# git add .
# git commit -m 'Modificação no ramo principal'
[master abc1234] Modificação no ramo principal
1 file changed, 1 insertion(+)
# git log --oneline -4
abc1234 Modificação no ramo principal
123abc4 novo_ramo
567def8 versão inicial
2.3 Tentando mesclar os ramos
# git merge outro_ramo
Auto-merging arquivo2.sh
CONFLICT (content): Merge conflict in arquivo2.sh
Automatic merge failed; fix conflicts and then commit the result.
# git status
# On branch master
# You have unmerged paths.
# (fix conflicts and run "git commit")
#
# Unmerged paths:
# (use "git add <file>..." to mark resolution)
#
# both modified: arquivo2.sh
</file>
O conteúdo do arquivo após o conflito:
Conteúdo do ramo principal
Conteúdo do outro ramo
<<<<<<< HEAD
Conteúdo do ramo principal
=======
Conteúdo do outro ramo
>>>>>>> outro_ramo
2.4 Resolvendo manualmente o conflito
# cat arquivo2.sh
Conteúdo do ramo principal
Conteúdo do outro ramo
Conteúdo do ramo principal
Conteúdo do outro ramo
# git commit -m 'Resolvido conflito'
[master def5678] Resolvido conflito
2.5 Removendo ramos
# git branch -d novo_ramo outro_ramo
Deleted branch novo_ramo (was 123abc4).
Deleted branch outro_ramo (was 987fed6).
# git branch
* master
II. Uso do Gitee
1. Criando um repositório vazio no Gitee
Após criar o repositório vazio, você pode usar HTTPS ou SSH para interagir com ele.
2. Configurando conexão entre máquina local e o Gitee
2.1 Usando protocolo HTTPS
# git remote add origin https://gitee.com/seu_usuario/nome_repositorio.git
# git push -u origin master
2.2 Configuração SSH para acesso sem senha
# ssh-keygen -t rsa -C "seu_email@example.com"
# cat ~/.ssh/id_rsa.pub
Copie a chave pública e adicione-a à sua conta no Gitee.
# git remote set-url origin git@gitee.com:seu_usuario/nome_repositorio.git
2.3 Testando a integração
# echo 'Mensagem de teste' > teste.txt
# git add .
# git commit -m 'Teste de envio'
[master 1234567] Teste de envio
# git tag -a 'v1.0' -m 'Versão inicial'
# git push origin master