Compartilhar os arquivos na nuvem?
Passar os arquivos por pendrive?
Fazer o projeto em reunião com sua equipe?
Um dos criadores do linux
Controlador de versão distribuido
Configurar e inicializar um repositório e adicionar alguns arquivos
Iniciar um repositório
Configurar seu usuário
Escrever um arquivo nomeDoPlayer.md
Arquivo = Agente
git add
= Posiciona o Agente para uma foto
git commit
= Tira a foto para o crachá
Arquivo = Agente
git commit
= Tira a foto para o crachá
git push
= Envia o cadastro (commit) para a unidade do porta aviões da SHIELD (repositório remoto)
Certifica o status corrente do diretório
$git status
# On branch master
#
# Initial commit
# Untracked files:(use "git add ..." to include in what will be committed)
#
# nomeDoPlayer.md
Devemos começar a rastrear as mudanças
$git add nomeDoplayer.md
$git status
# On branch master
#
# Initial commit
# Changes to be commited:
# (use "git rm --cached <"file">..." to unstage)
#
# new file: nomeDoplayer.md
Guardando uma foto no repositório local
$git commit -m "Initial commit"
$git status
# On branch master
nothing to commit (working directory clean)
Alterar o arquivo commitado
Adicionar um arquivo README.md
Adicionar arquivos para a staging area (dica: git add
);
Salvar alterações no repositório local (dica: git commit
);
Realizar mesmo processo para salvar alterações no repositório local;
É possível ver quais alterações feitas
$ git log
commit 19dd00d4913497107ef6de07e0ee00a9b9315304
Author: John Doe <"johnd@infojr.com.br">
Date: Sun Oct 12 02:51:03 2014 -0300
Creating index and modifying README.md
commit a44995e61542e54aa88e55908cf09133578a43f6
Author: John Doe <"johnd@infojr.com.br">
Date: Sun Oct 12 02:37:13 2014 -0300
Initial commit
Podemos ver o que modificamos em relação ao repositório local
$ git diff
diff --git a/README.md b/README.md
index deadc001..c0ffeee 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
Minha aventura
===================
+
+John Doe
+ * __age:__ 22
+ * __role:__ Agent Shield
$ git add nomeDoplayer.md
$ git diff
Como fazer para remover arquivos adicionados acidentalmente?
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: nomeDoplayer.md
#
$ git reset HEAD nomeDoplayer.md
Unstaged changes after reset:
M nomeDoplayer.md
E se eu quiser voltar como estava antes?
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working
directory)
#
# modified: nomeDoplayer.md
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- nomeDoplayer.md
$ git status
E se não era a hora daquele commit??
$ git reset --soft HEAD^
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: nomeDoplayer.md
# new file: 2.md
#
E se eu esqueci de adicionar alguma coisa?
$ git add partnerShield.md
$ git commit --amend -m "appending partner"
Precisamos definir quem vai ser o nosso servidor central
$ git remote add origin https://github.com/user/project
$ git push -u origin master
Para que seja possível pegar as modificações do repositório remoto
$ git pull origin nomeDaBranch
Ou ...
$ git fetch origin
Para que as pessoas peguem o repositório remoto
$ git clone https://github.com/usuario/projeto [folder]
Criar branch
$ git branch aventura
Acessar branch
$ git checkout aventura
Switched to branch 'aventura'
Atalho para criar e acessar branch em um só comando
$ git checkout -b aventura
Listar branches
$ git branch
aventura
* master
Enviar branch específica
$ git push origin nomeDaBranch
Baixar branch específica
$ git checkout -t origin/nomeDaBranch
Atualizar Branch específica e mover a HEAD
$ git pull origin nomeDaBranch
Baixar o que há de novo (não move a HEAD)
$ git fetch origin
Crie um repositório remoto e colabore com o do colega
Crie uma cópia do repositório do seu colega (dica: git clone);
Crie sua branch (dica: git branch, git checkout, nome diferente do seu colega);
Crie os asquivos main.md
e teamMyName.md
Envie as suas alterações para o github (dica: git push);
Pegue as alterações feitas pelo seu colega (dica: git fetch, git pull);
Terminamos de criar diferentes pontos de vista da nossa história. É hora de fundir as branches
Somente um dos desenvolvedores executa
$ git checkout master
$ git merge adventure
Updating deadc001.. c0ffeee
Fast-forward
2 files changed, 45 insertions(+),
7 deletions(-)
create mode 100644 main.md
create mode 100644 teamHohenheim.md
Remover branch
$ git branch -d adventure
Ainda o mesmo desenvolvedor executa
Envia as alterações locais
$ git push origin master
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 1.47 KiB | 0 bytes/s, done.
Total 5 (delta 3), reused 0 (delta 0)
To https://github.com/Marinofull/war
7725303..1d84a0e master -> master
Desta vez o segundo desenvolvedor:
Pega as alterações remotas (dica: fetch, pull)
Executa o merge da sua branch na master
$ git fetch origin
$ git pull origin master
$ git checkout master
$ git merge adventure2
O que aconteceu?
E quando duas pessoas mechem no mesmo arquivo?
$ git push
! [rejected] master ->
master (non-fast-forward)
IMPORTANTE! REALIZAR GIT PULL ANTES DE GIT PUSH!
Arquivo com conflito
<<<<<<< HEAD
DungeonCrawlers Generations
=======
Dungeon Crawlers
>>>>>>> c0ffeebabacac001deadbeebada55bada1aca0ff
git fetch
**evitável**
! [rejected] master ->
master (non-fast-forward)
$ apt-get install meld
$ git config --global merge.tool meld
$ git config --global diff.guitool meld
Ferramenta para merge e diff
$ git mergetool
$ git difftool