Post on 07-Jul-2015
description
Git 17 de Abril
marcoafilho@gmail.com
marcoafilho
@marcoafilho
LICENÇA
MARCO ANTONIO FILHO
COORDENADOR DE TI INPACT.ME
UMA VELHA HISTÓRIA
A PRINCESA FOI CAPTURADA OS HERÓIS SURGEM REQUISITOS § Cadastro de heróis § Cadastro de times § Cadastro de masmorras (dungeons) § Envio de times a masmorras § Times devem batalhar entre si REGRAS UTILIZADAS Manual 3D&T de Marcelo Cassaro
DUNGEON CRAWLER
Monte os seus personangens: goo.gl/qoRFp
Dungeon Character Team
Battle
REGRAS - Criação de Personagens PERSONAGENS § Máximo de 7 pontos em características; § Máximo 5 em um atributo; § Pontos de Vida são calculados com base na
resistência (resistência x 1d);
REGRAS - Batalhas PERSONAGENS 1. Jogadores jogam um dado. O maior valor inicia o combate; 2. Quem tem a iniciativa ataca. O dano é calculado em força ou poder de fogo x d6; 3. O oponente defende. A defesa é calculada pela armadura x d6; 4. Os pontos de vida são reduzidos pela diferença: ataque - defesa; 5. O oponente ataca; 6. Aquele que for nocauteada (pontos de vida menor que zero) é o perdedor;
INTRODUZINDO O CONTROLE DE VERSÃO GIT
PROBLEMAS DE COLABORAÇÃO
CONTROLE DE VERSÃO
TEMPO
MERGE
INICIALIZANDO GIT
$ git config -‐-‐global user.name "Marco Antonio Filho" $ git config -‐-‐global user.email "marcoafilho@gmail.com" $ git config -‐-‐global color.ui true
Execute no terminal
Configuração do seu usuário git.
Inicialize o seu projeto
$ mkdir save-‐the-‐princess $ cd save-‐the-‐princess $ git init
MARKDOWN CONVERSOR TEXTO-HTML
Útil para documentação simples de uma plataforma.
Um cabeçalho de nível 1 ======================= Um cabeçalho de nível 2 -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ Isso é um paragráfo e abaixo é uma lista * Item 1 * Item 2 * Item 3
EXERCÍCIO OBJETIVO
Configurar e inicializar um repositório local e adicionar alguns arquivos
MÉTODO
§ Configurar git com o seu usuário (dica: git config);
§ Inicializar um repositório dentro da pasta do seu projeto (dica: git init);
§ Escrever um arquivo README.md explicando o que é o programa (dica: google markdown);
§ Criar uma página html que contenha uma lista de personagens (characters); § Nome (Name) e Classe (Class);
§ Força (Strength), Habilidade (Skill), Resistência (Resistance), Armadura (Armor), Poder de Fogo (Fire Power);
30 MIN
FLUXO DE DESENVOLVIMENTO GIT
FLUXO GIT
Working directory
LOCAL REMOTO
Staging Area Remote Repository Local Repository
git add
git commit
git push
git pull
git checkout
git merge
GIT STATUS VERIFICA O ESTADO CORRENTE DO DIRETÓRIO
$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # README.md # characters_index.html
ADICIONANDO AO PALCO DEVEMOS COMEÇAR A RASTREAR AS MUDANÇAS
$ git add README.md characters_index.html $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm -‐-‐cached <file>..." to unstage) # # new file: README.md # new file: characters_index.html #
ARMAZENANDO UMA FOTO GUARDANDO UMA FOTO NO REPOSITÓRIO LOCAL
$ git commit -‐m "Initial commit" $ git status # On branch master nothing to commit (working directory clean)
EXERCÍCIO OBJETIVO
Armazenar arquivos no repositório local através de commits
MÉTODO
§ Adicionar arquivos para a staging area (dica: git add);
§ Salvar alterações no repositório local (dica: git commit);
§ Criar uma página com a lista de masmoras (dungeons); § Nome (Name);
§ Navegação entre masmorras e personagens; § Realizar mesmo processo para salvar alterações no repositório local; § Bônus: Adicionar css à página.
30 MIN
HISTÓRICO É POSSÍVEL VER QUAIS AS ALTERAÇÕES FEITAS
$ git log commit 19dd00d4913497107ef6de07e0ee00a9b9315304 Author: Marco Antonio Filho <marcoafilho@gmail.com> Date: Thu Apr 11 02:51:03 2013 -‐0300 Creating index and modifying README.md commit a44995e61542e54aa88e55908cf09133578a43f6 Author: Marco Antonio Filho <marcoafilho@gmail.com> Date: Thu Apr 11 02:37:13 2013 -‐0300 Initial commit
FLUXO GIT
Working directory
LOCAL REMOTO
Staging Area Remote Repository Local Repository
git add
git commit
git push
git pull
git checkout
git merge
COMPREENDENDO STAGING AREA
DIFERENÇAS ENTRE COMMITS PODEMOS VER O QUE MODIFICAMOS EM RELAÇÃO AO REPOSITÓRIO LOCAL
$ git diff diff -‐-‐git a/README.md b/README.md index 9d1d09d..61f26f8 100644 -‐-‐-‐ a/README.md +++ b/README.md @@ -‐1,2 +1,4 @@ My dungeon crawlers =================== + +A warrior should fight with his heart instead of his sword. $ git add README.md $ git diff
ADD ACIDENTAL COMO FAZER PARA REMOVER ARQUIVOS ADICIONADOS ACIDENTALMENTE?
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.md # $ git reset HEAD README.md Unstaged changes after reset: M README.md
DESCARTANDO MODIFICAÇÕES E SE EU QUISER VOLTAR COMO ESTAVA ANTES?
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -‐-‐ <file>..." to discard changes in working directory) # # modified: README.md # no changes added to commit (use "git add" and/or "git commit -‐a") $ git checkout -‐-‐ README.md $ git status
REFAZENDO COMMITS E SE EU ESQUECI DE ADICIONAR ALGUMA COISA?
$ git reset -‐-‐soft HEAD^ $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.md # new file: dungeons_index.html #
ADICIONANDO A UM COMMIT E SE EU ESQUECI DE ADICIONAR ALGUMA COISA?
$ git add dungeon_new.html $ git commit -‐-‐amend -‐m "Adding dungeon index and form"
COMPARTILHANDO REPOSITÓRIOS
REPOSITÓRIO REMOTO
git push
git pull
git pull
GITHUB
ADICIONANDO COLABORADORES
ADICIONANDO O SERVIDOR REMOTO PRECISAMOS DEFINIR QUEM VAI SER O NOSSO SERVIDOR CENTRAL
$ git remote add origin https://github.com/<user>/<project>.git $ git push -‐u origin master
$ git pull
PARA QUE AS PESSOAS PEGUEM AS MODIFICAÇÕES DO REPOSITÓRIO REMOTO
$ git clone https://github.com/<user>/<project>.git [<folder>]
PARA QUE AS PESSOAS PEGUEM O REPOSITÓRIO REMOTO
EXERCÍCIO OBJETIVO
Crie um repositório remoto e colabore com o do colega
MÉTODO
§ Crie o seu repositório no github e envie o seu código (dica: git remote e git push);
§ Adicione o colega do seu lado como colaborador como colaborador;
§ Crie uma cópia do repositório do seu colega (dica: git clone);
§ Sem contar o que está fazendo, faça as alterações que desejar no projeto dele; § Envie as suas alterações para o github (dica: git push); § Volte para o diretório do seu projeto e pegue as alterações feitas pelo seu colega (dica: git pull); § Identifique as alterações feitas sem perguntar para o colega que as modificou.
30 MIN
MAIS SOBRE COLABORAÇÃO
BRANCHES É MELHOR CRIAR FUNCIONALIDADES EM BRANCHES
$ git branch char
MASTER
CHAR
$ git branch char * master
LISTAR BRANCHES
ACESSAR BRANCH
$ git checkout char Switched to branch 'char'
HEAD
EXERCÍCIO OBJETIVO
Crie uma branch e nessa branch crie um formulário para characters
MÉTODO
§ Crie uma branch (dica: git branch);
§ Vá para a branch (dica: git checkout);
§ Crie um formulário para salvar personagens;
§ Faça o commit dessa funcionalidade;
§ Volte para a branch master.
§ O que foi que aconteceu?
15 MIN
MERGE BRANCHES TERMINAMOS A FUNÇÃO CHAR. É HORA DE FUNDIR AS BRANCHES
$ git checkout master $ git merge char Updating c8541d6..a226599 Fast-‐forward 0 files changed, 0 insertions(+), 0 deletions(-‐) create mode 100644 chars_new.html
REMOVER BRANCH
$ git branch -‐d char
MASTER
CHAR
HEAD
RESOLVENDO CONFLITOS E QUANDO DUAS PESSOAS MEXEM NO MESMO ARQUIVO?
$ git push ! [rejected] master -‐> master (non-‐fast-‐forward)
ARQUIVO COM CONFLITO!
$ git pull CONFLICT (content): Merge conflict in char.html
MASTER
CHAR
HEAD
char.html IMPORTANTE! REALIZAR GIT PULL ANTES DE GIT PUSH!
RESOLVENDO CONFLITOS ARQUIVO COM CONFLITO
<<<<<<< HEAD <title>DungeonCrawlers Generations</title> ======= <title>Dungeon Crawlers</title> >>>>>>> 7a61a9b596cdd07120e36f4f916ee65036d5c179
Seu repositório
Repositório remoto
FIX, COMMIT AND PUSH!!!
EXERCÍCIO OBJETIVO
Resolvendo conflitos no seu repositório
MÉTODO
§ Combine em uma linha para que o seu colega faça uma modificação;
§ Faça uma modificação na mesma linha;
§ Faça um commit e push no repositório do seu colega;
§ Faça um commit e pull no seu repositório; § Tente agora resolver o conflito; § Quando o arquivo estiver corrigido, faça commit e push.
15 MIN
DÚVIDAS
? ? ?
?
?
? ?
? ?
?
? ?
MUITO OBRIGADO!
marcoafilho@gmail.com
marcoafilho
@marcoafilho