Vamos começar com o repositório Git. Vamos criar uma pasta chamada projeto.git e inicializá-lo para se tornar o repositório remoto:
projeto $ mkdir.idiotaprojeto $ cd.git /
$ git init --bare
Repositório Git vazio inicializado em / Users / zakh_eecs / _work / LearnGIT / git_remote_repository /
projeto.git /
Agora vá para um novo local onde você pode criar uma pasta limpa. Crie a pasta project_source e inicialize-a para Git:
$ mkdir project_source$ cd project_source
$ git init
Repositório Git vazio inicializado em / Users / zakh_eecs / _work / LearnGIT / git_branching_source /
project_source /.git /
$ touch ReadMe.TXT
$ git add -A
$ git commit -m "Confirmação inicial"
[master (root-commit) 176134f] Confirmação inicial
1 arquivo alterado, 0 inserções (+), 0 exclusões (-)
modo de criação 100644 ReadMe.TXT
O project_setup é um diretório Git com ReadMe.arquivo txt. No entanto, ele não está conectado ao nosso repositório remoto. Vamos configurar o projeto.git para ser o repositório remoto para project_source. Podemos fazer isso por meio do seguinte comando:
$ git remote add origin / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.idiota$ git push origin master
Contando objetos: 3, concluído.
Escrevendo objetos: 100% (3/3), 213 bytes | 0 bytes / s, concluído.
Total 3 (delta 0), reutilizado 0 (delta 0)
Para / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.idiota
* [novo ramo] mestre -> mestre
Com o comando git remote add origin, criamos a conexão entre o projeto.git e project_source. Com o comando git push origin master, enviamos nosso branch master para o repositório remoto.
Vamos verificar nossos branches (ainda na pasta project_source):
$ git branch* mestre
$ git branch -r
origem / mestre
$ git branch -a
* mestre
controles remotos / origem / mestre
O primeiro comando está mostrando apenas o branch local. A opção -r está mostrando o branch remoto. E a opção -a está mostrando local e remoto.
Vamos criar alguns branches em nosso diretório de trabalho:
$ git branch developmenthotfix $ git branch
$ git branch experimental
$ git branch -a
desenvolvimento
experimental
hotfix
* mestre
controles remotos / origem / mestre
Criamos ramos chamados de desenvolvimento, hotfix e experimental. Eles estão aparecendo em nossa lista de agências locais. Mas nos controles remotos / origem, há apenas o branch master porque esse é o único que empurramos. A estrela (*) mestre significa que ainda estamos no ramo mestre local. Vamos para o branch de desenvolvimento, confirmar as alterações e enviar essas alterações para o repositório remoto.
$ git checkout developmentMudou para o ramo 'desenvolvimento'
$ echo abc> ReadMe.TXT
$ git add -A
$ git commit -m "Branch de desenvolvimento modificado"
[desenvolvimento dd9933e] Ramificação de desenvolvimento modificada
1 arquivo alterado, 1 inserção (+)
$ git push origin development
Contando objetos: 3, concluído.
Escrevendo objetos: 100% (3/3), 257 bytes | 0 bytes / s, concluído.
Total 3 (delta 0), reutilizado 0 (delta 0)
Para / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.idiota
* [novo ramo] desenvolvimento -> desenvolvimento
Vamos verificar todos os branches agora:
$ git branch -a* desenvolvimento
experimental
hotfix
mestre
controles remotos / origem / desenvolvimento
controles remotos / origem / mestre
Vemos que estamos no ramo de desenvolvimento local, mas também há um ramo de desenvolvimento remoto. Quando implementamos nossas mudanças com o desenvolvimento de origem git push, ele criou o branch de desenvolvimento em remotes / origin.
Vamos agora sair do project_source e encontrar um novo lugar onde possamos ter uma nova pasta. Aqui, vamos clonar o repositório remoto com o seguinte comando:
$ git clone / Users / zakh_eecs / _work / LearnGIT / git_remote_repository / project.idiotaClonando em 'projeto' ..
feito.
Nós clonamos uma nova cópia chamada projeto do projeto.idiota. Acesse a pasta do projeto e verifique os branches:
projeto $ cd$ git branch
* mestre
Quando o Git faz um clone inicial de um repositório remoto, ele obtém apenas o branch master. Se usarmos a opção -a, vemos:
$ git branch -a* mestre
remotes / origin / HEAD -> origem / mestre
controles remotos / origem / desenvolvimento
controles remotos / origem / mestre
Observe que não há ramo de desenvolvimento local. Além disso, nunca enviamos hotfix e branches experimentais de project_source para project.idiota, então não os vemos. O repositório remoto possui ramificações mestre e de desenvolvimento (remotes / origin / HEAD -> origin / master não é uma ramificação, apenas informa para onde o HEAD está apontando).
Vamos colocar o branch de desenvolvimento em nosso ambiente de trabalho:
$ git fetch --allBuscando origem
$ git checkout development
Desenvolvimento de filial configurado para rastrear o desenvolvimento de filial remota desde a origem.
Mudou para um novo ramo 'desenvolvimento'
Se você estiver usando uma versão mais antiga do Git, talvez seja necessário usar:
$ git checkout desenvolvimento origem / desenvolvimentoAgora, se usarmos o comando branch, obteremos:
$ git branch -a* desenvolvimento
mestre
remotes / origin / HEAD -> origin / master
remotos / origem / desenvolvimento
controles remotos / origem / mestre
Podemos fazer alterações no branch de desenvolvimento, confirmar as alterações e enviar por push usando o comando git push origin development.
Em conclusão
Ao trabalhar com GitHub e BitBucket, você pode usar um link HTTPS ou SSH para se conectar ao seu repositório remoto. Portanto, você definirá sua origem para esses links. Mas os princípios do branch remoto são os mesmos descritos aqui.
Um estudo mais aprofundado:
- https: // git-scm.com / docs / git-branch
- https: // git-scm.com / book / en / v2 / Git-on-the-Server-Setting-Up-the-Server
- https: // help.github.com / articles / add-an-existing-project-to-github-using-the-command-line /
- https: // help.github.com / articles / push-to-a-remote /