Para ler o primeiro artigo, com comandos essenciais. Clique aqui.
Para ler o segundo artigo, com comandos para servidores remotos. Clique aqui.
Para ler o terceiro artigo, com comandos para fazer Tags/Releases. Clique aqui.
Branch ou Ramificações é um conceito muito interessante no Git.
Nos sistemas CVS comuns no mercado, fazer um Branch é um processo trabalhoso e demorado, mas no Git este processo é bem rápido e fácil.
Somente é feito um apontamento para um snapshot do master, com isso, não é necessário copiar todos os arquivos como nos outros sistemas de controle de versão.
Criando um Branch.
Para criar um novo Branch, utilizamos o comando abaixo.
$ git branch Teste
$ git branch
Teste
* master
Depois digitamos o comando git branch, onde exibe todos branchs. Repare que o *, na frente do master, exibe qual branch estamos. Atualmente estamos trabalhando no Master. No branch que estamos trabalhando é chamado de Head.
Agora vamos mudar para o Branch que criamos, através do comando checkout.
$ git checkout Teste
Switched to branch 'Teste'
$ git branch
* Teste
master
Agora identificamos que alteramos para o branch Teste. Repare no * na frente do Branch Teste.Alterei um arquivo no branch Teste e o mesmo arquivo no Master, para simular um conflito.
Sempre que for alterar de branch, verifique se fez commit das suas alterações.
$ git commit -a -m "Testando Branch #1"
Depois fazer o checkout para o master. $ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Agora usamos o comando git merge, para fazer o merge dos arquivos. No caso, irá ocorrer um conflito, conforme abaixo. $ git merge Teste
Auto-merging TesteStoryBoard/Base.lproj/Main.storyboard
CONFLICT (content): Merge conflict in TesteStoryBoard/Base.lproj/Main.storyboard
Automatic merge failed; fix conflicts and then commit the result.
MacMiniRomero:TesteStoryBoard douglasromero$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: TesteStoryBoard/Base.lproj/Main.storyboard
no changes added to commit (use "git add" and/or "git commit -a")
Resolvendo Conflitos.Utilizamos a ferramenta mergetool. Na versão que estou utilizando, no MAC OSX, defini para utilizar a ferramenta externa opendiff, que veem com o mac.
$ git mergetool --tool=opendiff
Abrirá uma tela com os arquivos para você realizar o merge manual.Depois de resolver os conflitos, conseguirá realizar o commit.
Deletando um Branch.
Para deletar um branch, utilizamos o comando branch com o parâmetro -D.
$ git branch -D teste
Deleted branch teste (was 4c9d7fd).
Listagem de Branch.
Para ver o último commit em cada branch, interessante para saber os status de cada um.
$ git branch -v
NorthWind 4c9d7fd Revert "Segunda Parte do Tutorial"
SouthWind 4c9d7fd Revert "Segunda Parte do Tutorial"
* master 4c9d7fd [ahead 1] Revert "Segunda Parte do Tutorial"
Listar somente os branchs que sofreram merge. $ git branch --merged
NorthWind
* master
Somente os branchs que não sofreram merge. $ git branch --no-merged
SouthWind
Branch Remotos.
Quando fazemos o clone de um branch, cria automaticamente o server remoto como sendo origin.
Para referenciar branchs remotos, utilizamos: remote/branch
Veja o exemplo abaixo de um checkout em um server remoto.
$ git status origin/master
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
$ git checkout origin/master
Note: checking out 'origin/master'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 02215fd... Inserindo arquivo de ignore.#
$ git log --oneline
02215fd Inserindo arquivo de ignore.#
d28226b Update TesteStoryBoardTests.m
81c3aa1 Merge branch 'master' of https://github.com/dsromerobr/TesteStoryBoard
55f8e2a Deletando arquivos de configuração de usuário. Ok.
aa3945a Commit com alterações do exemplo de GIT. Inclusão de uma property na primeira tela.
afb0c3e Create README.md
2128d14 Segunda Parte do Tutorial
7eda703 Initial Commit
$ git branch
* (HEAD detached at origin/master)
NorthWind
SouthWind
master
Para sincronizar o seu branch com o remoto, utilizamos o seguinte comando:
$ git fetch origin
Criando Servidor Remoto.
Também é possível adicionar outro servidor remoto e fazer a referencia para acessar ele, para adicionar outro servidor remoto:
$ git remote add testeremote https://github.com/dsromerobr/TesteStoryBoard.git
Verificar os servidores remotos.
$ git remote -v
origin https://github.com/dsromerobr/TesteStoryBoard.git (fetch)
origin https://github.com/dsromerobr/TesteStoryBoard.git (push)
testeremote https://github.com/dsromerobr/TesteStoryBoard.git (fetch)
testeremote https://github.com/dsromerobr/TesteStoryBoard.git (push)
Enviando dados (Pushing).
Para enviar dados para o servidor remoto, utilizamos o comando Push.
Vamos criar um branch remoto SouthWind, também podemos criar o Branch com outro nome, alterando para SouthWind:NOVONOME.
$ git push origin SouthWind:SouthWind
Counting objects: 23, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (23/23), 3.98 KiB | 0 bytes/s, done.
Total 23 (delta 6), reused 0 (delta 0)
To https://github.com/dsromerobr/TesteStoryBoard.git
* [new branch] SouthWind -> SouthWind
Para fazer push para o branch.
$ git push origin SouthWind
Everything up-to-date
Pegando um novo Branch remoto.
Caso você tenha que trabalhar em um branch, para fazer checkout e criar este branch remoto, utilizamos o comando checkout.
$ git checkout -b SouthWind origin/SouthWind
Branch SouthWind set up to track remote branch SouthWind from origin.
Switched to a new branch 'SouthWind'
$ git branch
NorthWind
* SouthWind
master
Leia o quinto artigo, desfazendo e refazendo.
Nenhum comentário:
Postar um comentário