├── LICENSE-MIT.md ├── README.md ├── comandos ├── branches.md ├── commits.md ├── configuracoes.md ├── gerenciando-repositorios.md ├── git-no-servidor.md ├── guia-simplificado.md ├── stage-area.md ├── tags.md ├── trabalhando-git-flow.md ├── trabalhando-git-github.md ├── versionamento-repositorios.md └── working-directory.md ├── images ├── git-flow-comandos.png └── git-super-poderes.png └── sugestoes ├── cursos-palestras.md ├── ferramentas.md ├── githosting.md ├── livros.md └── slides.md /LICENSE-MIT.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Anderson Nascimento 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Conhecendo os super poderes do Git 6 | 7 | > Guia com seleção de comandos para o Trabalho com Git e GitHub 8 | 9 | ## Comandos 10 | 11 | 1. [Guia Simplificado](https://github.com/theandersonn/comandos-git/blob/master/comandos/guia-simplificado.md) 12 | 2. [Configurações](https://github.com/theandersonn/comandos-git/blob/master/comandos/configuracoes.md) 13 | 3. [Versionamento de Repositórios](https://github.com/theandersonn/comandos-git/blob/master/comandos/versionamento-repositorios.md) 14 | 4. [Working Directory](https://github.com/theandersonn/comandos-git/blob/master/comandos/working-directory.md) 15 | 5. [Stage Area](https://github.com/theandersonn/comandos-git/blob/master/comandos/stage-area.md) 16 | 6. [Trabalhando com Commits](https://github.com/theandersonn/comandos-git/blob/master/comandos/commits.md) 17 | 7. [Os Super Poderes das Branches](https://github.com/theandersonn/comandos-git/blob/master/comandos/branches.md) 18 | 8. [Gerenciando Repositórios](https://github.com/theandersonn/comandos-git/blob/master/comandos/gerenciando-repositorios.md) 19 | 9. [Trabalhando com Git e GitHub](https://github.com/theandersonn/comandos-git/blob/master/comandos/trabalhando-git-github.md) 20 | 10. [Trabalhando com Tags](https://github.com/theandersonn/comandos-git/blob/master/comandos/tags.md) 21 | 11. [Git no Servidor](https://github.com/theandersonn/comandos-git/blob/master/comandos/git-no-servidor.md) 22 | 12. [Trabalhando com Git Flow](https://github.com/theandersonn/comandos-git/blob/master/comandos/trabalhando-git-flow.md) 23 | 24 | ## Sugestões 25 | 26 | 1. [Cursos e Palestras](https://github.com/theandersonn/comandos-git/blob/master/sugestoes/cursos-palestras.md) 27 | 2. [Ferramentas](https://github.com/theandersonn/comandos-git/blob/master/sugestoes/ferramentas.md) 28 | 3. [Livros](https://github.com/theandersonn/comandos-git/blob/master/sugestoes/livros.md) 29 | 4. [Slides](https://github.com/theandersonn/comandos-git/blob/master/sugestoes/slides.md) 30 | 5. [GitHosting](https://github.com/theandersonn/comandos-git/blob/master/sugestoes/githosting.md) 31 | 6. [Vim Cheat Sheet](http://woliveiras.com.br/vimparanoobs/) 32 | 33 | ## Colabore 34 | 1. Fork o repositório 35 | 2. Crie a sua branch: git checkout -b nome-branch 36 | 3. Committe as suas alterações: git commit -m "Comentário com a sua alteração" 37 | 4. Envie a sua branch: git push origin nome-branch 38 | 5. Envie uma solicitação de alteração através de pull request :) 39 | 40 | ## Questões e dúvidas 41 | Caso tenha alguma questão ou sugestão, abra uma [issue](https://github.com/theandersonn/comandos-git/issues/new) e envie o seu feedback. 42 | 43 | ## License 44 | 45 | [MIT](https://github.com/theandersonn/comandos-git/blob/master/LICENSE-MIT.md) © [Anderson Nascimento](https://github.com/theandersonn) 46 | -------------------------------------------------------------------------------- /comandos/branches.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com branches 2 | 3 | **Criar uma nova branch** 4 | ```bash 5 | git branch nome-branch 6 | 7 | # Acessando a nova branch 8 | git checkout nome-branch 9 | 10 | # Criando e acessando uma nova branch 11 | git checkout -b nome-branch 12 | 13 | # Criando uma nova branch vazia 14 | git checkout --orphan nome-branch 15 | ``` 16 | 17 | **Baixar todas as branchs que estão online** 18 | ```bash 19 | git fetch --all ou git remote update 20 | ``` 21 | 22 | **Criar uma branch local baseada na remota** 23 | ```bash 24 | git fetch origin 25 | 26 | git checkout -b "feature-x" "origin/feature-x" 27 | ``` 28 | 29 | **Renomeiar branch local** 30 | ```bash 31 | # Renomeia a brach localmente 32 | git branch -m old-branch new-branch 33 | 34 | # Deleta a branch velha 35 | git push --set-upstream origin new-branch 36 | 37 | # Empurra a nova branch, define a branch local no track remoto 38 | git push origin :old-branch 39 | ``` 40 | 41 | **Retorna num ponto específico e cria uma nova branch** 42 | ```bash 43 | git checkout hash-commit -b nome-nova-branch 44 | ``` 45 | 46 | **Renomeando branches** 47 | ```bash 48 | git branch -m nome-branch 49 | ``` 50 | 51 | **Aplicando merge em branches** 52 | ```bash 53 | # Precisa estar na branch de destino 54 | git merge nome-branch 55 | ``` 56 | 57 | **Visualizando todas as branches existentes no repositório** 58 | ```bash 59 | # A branch corrente será marcada por um asterisco 60 | git branch 61 | ``` 62 | 63 | **Visualizando todas as branches locais e remotas** 64 | ```bash 65 | git branch -a 66 | ``` 67 | 68 | **Deletando uma branch** 69 | ```bash 70 | git branch -D nome-branch 71 | ``` 72 | 73 | **Deletando branch remota** 74 | ```bash 75 | git push origin :nome-branch 76 | ``` 77 | -------------------------------------------------------------------------------- /comandos/commits.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com commits 2 | 3 | **1 Commitando arquivos** 4 | 5 | *Depois de adicionar os arquivos com git add -A, por exemplo.* 6 | 7 | ```bash 8 | git commit -m "Inseir um Comentário Significativo" 9 | ``` 10 | 11 | **2 Commitando arquivos já inseridos na Staging Area** 12 | ```bash 13 | git commit -a -m "Inseir um Comentário Significativo" 14 | git commit -am "Inseir um Comentário Significativo" 15 | ``` 16 | 17 | **3 Editando a mensagem do último commit** 18 | ```bash 19 | git commit --amend -m "mensagem-do-commit" 20 | ``` 21 | 22 | **4 Fechar issues através de commits** 23 | ```bash 24 | git commit -m "Mensagem commit - fix ou resolve IDissue" 25 | ``` 26 | 27 | O ID da Issue você consegue na URL da mesma. Ex.: `issues/8` - 8. 28 | 29 | Outras palavras chave que podemos usar para fechamento de Issues: `fix, fixes, fixed, close, closes, closed, resolve, resolves, resolved` 30 | 31 | **5 Revertendo ação de um commit específico** 32 | ```bash 33 | git revert commit-hash 34 | ``` 35 | 36 | Para encontrar o hash, você precisa rodar no terminal: `git log`. 37 | 38 | O hash é aquele número que aparece em `comit: xxxxxxx.` 39 | 40 | **6 Abortando o processo de reverter commit** 41 | ```bash 42 | git revert --abort 43 | ``` 44 | 45 | **7 Abortando o merge** 46 | ```bash 47 | git merge --abort 48 | ``` 49 | 50 | **8 Acionando a [mergetool](https://git-scm.com/docs/git-mergetool)** 51 | ```bash 52 | git mergetool 53 | ``` 54 | 55 | **9 Excluindo um commit local** 56 | ```bash 57 | git reset --hard hash-commit 58 | ``` 59 | 60 | **13 Visualiza alterações específicas** 61 | ```bash 62 | git diff nome-arquivo.extensao 63 | ``` 64 | 65 | **14 Visualiza alterações entre commits** 66 | ```bash 67 | git diff hash-commit1 hash-commit2 68 | ``` 69 | 70 | **15 Visualiza arquivos em conflito** 71 | ```bash 72 | git diff --name-only --diff-filter=U 73 | ``` 74 | 75 | **16 Transferindo alterações que ainda não estão commitadas para o stash** 76 | ```bash 77 | git stash 78 | ``` 79 | 80 | **17 Visualizando itens que estão no stash** 81 | ```bash 82 | git stash list 83 | ``` 84 | 85 | **18 Utilizando o último item adicionado no stash** 86 | ```bash 87 | git stash apply 88 | ``` 89 | 90 | **19 Remove Stash** 91 | ```bash 92 | git stash drop stash@{0} 93 | ``` 94 | 95 | **20 Aplica e remove o último Stash** 96 | ```bash 97 | git stash pop 98 | ``` 99 | 100 | **21 Limpando o stash** 101 | ```bash 102 | git stash clear 103 | ``` 104 | -------------------------------------------------------------------------------- /comandos/configuracoes.md: -------------------------------------------------------------------------------- 1 | # Configurações 2 | 3 | **Obs1:** (Exemplo Windows) Acesse o menu iniciar, localize o ícone do Git Bash, clique com o direito do mouse e em propriedades altere para o local onde normalmente ficam os seus projetos. Exemplo: D:\xampp\htdocs 4 | 5 | **Obs2:** No Git Bash a maioria dos comandos são inicializados com $, no entanto são inseridos automaticamente pela ferramenta. Por este motivo ocultei nos exemplos abaixo. 6 | 7 | 8 | **1 Locomovendo-se pelas pastas do projeto** 9 | ```bash 10 | cd nome-da-pasta 11 | 12 | cd .. // Retorna 1 nível 13 | 14 | cd - // Retorna para a pasta que estávamos anteriormente 15 | ``` 16 | 17 | **2 Retorna o caminho da pasta atual** 18 | ```bash 19 | pwd 20 | ``` 21 | 22 | **3 Abre o Windows Explorer** 23 | ```bash 24 | explorer 25 | ``` 26 | 27 | **4 Abre o Explorer do Windows na pasta que estamos atualmente** 28 | ```bash 29 | explorer . 30 | ``` 31 | 32 | **5 Configura nome de usuário** 33 | ```bash 34 | git config --global user.name nome-de-usuario 35 | ``` 36 | 37 | **6 Configura email de usuário** 38 | ```bash 39 | git config --global user.email email@email.com.br 40 | ``` 41 | 42 | **7 Configura editor padrão** 43 | ```bash 44 | git config --global core.editor nome-editor 45 | ``` 46 | 47 | **8 Configura a mergetool (meld)** 48 | ```bash 49 | git config --global merge.tool meld 50 | ``` 51 | 52 | **9 Edita configurações globais** 53 | ```bash 54 | git config --global -e 55 | # Exemplo editor = atom --wait 56 | ``` 57 | 58 | **10 configura follow-tags como true por padrão** 59 | ```bash 60 | git config --global --edit 61 | [push] 62 | followTags = true 63 | ``` 64 | 65 | **10 Armazena senha (https)** 66 | ```bash 67 | git config --global credential.helper cache 68 | ``` 69 | 70 | **11 Remove senha armazenada (https)** 71 | ```bash 72 | git config --global --unset credential.helper 73 | ``` 74 | 75 | **12 armazena senha temporariamente (https)** 76 | ```bash 77 | git config --global credential.helper 'cache --timeout=3600' // (3600 segundos = 1 hora) 78 | ``` 79 | 80 | **13 Remove configuração setada** 81 | ```bash 82 | git config --global --unset propriedade 83 | git config --global --unset core.editor // exemplo 84 | git config --global --unset user.email // exemplo 85 | ``` 86 | 87 | **14 Visualiza as configurões de usuário** 88 | ```bash 89 | git config -l 90 | ``` 91 | 92 | **15 Visualiza as configurões de usuário** 93 | ```bash 94 | git config --list 95 | ``` 96 | 97 | **16 Verifica versão do git bash** 98 | ```bash 99 | git --version 100 | ``` 101 | -------------------------------------------------------------------------------- /comandos/gerenciando-repositorios.md: -------------------------------------------------------------------------------- 1 | # Gerenciando Repositórios 2 | 3 | **1 Pesquisa de texto em todos os diretórios** 4 | ```bash 5 | git grep termo-da-busca 6 | ``` 7 | 8 | **2 Visualizando relatório de commits** 9 | ```bash 10 | gitk // Visualize os Commits numa interface gráfica 11 | 12 | git log // Todos os commits 13 | 14 | git log -p // Commits realizados + Diff 15 | 16 | git log -p -3 // Commits realizados + Diff com limitação de exibição 17 | 18 | git log --stat // Resultado com estatistica 19 | 20 | git log --name-status // Visualiza status de todos os arquivos que foram modificados 21 | 22 | git log --oneline // Exibe log com hash e título do commit 23 | 24 | git log --pretty=oneline // Visualizando somente o código e mensagem de cada commit 25 | 26 | git log --abbrev-commit // Abrevia hash-commit 27 | 28 | git log --pretty=oneline --abbrev-commit // Resulta em linha única com hash-commit abreviada 29 | 30 | git log --pretty=format:"%h - %an, %ar : %s" // Resultado personalizado com hash - autor - tempo - titulo-commit 31 | 32 | ``` 33 | 34 | **3 Visualizar número de commits por usuário** 35 | ```bash 36 | git shortlog -s 37 | ``` 38 | 39 | **4 Visualizar alterações feitas depois do último commit que ainda não foram stageadas** 40 | ```bash 41 | git diff 42 | ``` 43 | 44 | **5 Visualizar alterações feitas depois do último commit que já foram stageadas** 45 | ```bash 46 | git diff --cached 47 | ``` 48 | 49 | **6 Identificando User que fez alterações em determinado arquivo** 50 | ```bash 51 | git blame nome-arquivo 52 | ``` 53 | -------------------------------------------------------------------------------- /comandos/git-no-servidor.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com Git no Servidor 2 | 3 | **8.1 Iniciar versionamento no servidor** 4 | ```bash 5 | git init --bare 6 | ``` 7 | **8.2 Clonando repositório do servidor** 8 | ```bash 9 | git clone file:////nome-servidor/pasta-desenvolvimento/nome-repositorio 10 | ``` 11 | **8.3 Consultando nome do remoto (por padrão chama-se origin)** 12 | ```bash 13 | git remote 14 | ``` 15 | **8.4 Enviando arquivos/modificações para o servidor** 16 | ```bash 17 | git push origin 18 | ``` 19 | -------------------------------------------------------------------------------- /comandos/guia-simplificado.md: -------------------------------------------------------------------------------- 1 | # Guia simplificado 2 | 3 | ### 1 Configurações iniciais do Git 4 | 5 | 6 | **Baixando e instalando o Git** 7 | ```bash 8 | https://git-scm.com/downloads 9 | ``` 10 | 11 | **Configura nome de usuário** 12 | ```bash 13 | git config --global user.name nome-sobrenome 14 | ``` 15 | 16 | **Configura email de usuário** 17 | ```bash 18 | git config --global user.email email@email.com.br 19 | ``` 20 | 21 | ### 2 Inicializando um repositório 22 | 23 | 24 | **Inicializa o versionamento no respectivo diretório** 25 | ```bash 26 | git init 27 | ``` 28 | 29 | ### 3 Comandos básicos para sobreviver 30 | 31 | 32 | **Verifica o status do repositório** 33 | ```bash 34 | git status 35 | ``` 36 | 37 | **Adiciona todos os arquivos para serem commitados** 38 | ```bash 39 | git add . 40 | ``` 41 | 42 | **Commitando arquivos** 43 | ```bash 44 | git commit -m "inserir um comentário significativo" 45 | ``` 46 | 47 | **Visualizando relatório de commits** 48 | ```bash 49 | git log // todos os commits 50 | git log --oneline // exibe log com hash e título do commit 51 | ``` 52 | 53 | **Adicionando um repositório remoto** 54 | ```bash 55 | git remote add origin https://github.com/User/Repository.git 56 | ``` 57 | 58 | **Enviando as modificações para o repositório remoto** 59 | ```bash 60 | git push origin 61 | ``` 62 | 63 | **Puxando alterações do repositório remoto** 64 | ```bash 65 | git pull origin 66 | ``` 67 | 68 | ### 4 Trabalhando com branchs 69 | 70 | 71 | **Criando e locomovendo-se para uma nova branch** 72 | ```bash 73 | git checkout -b nome-branch 74 | ``` 75 | 76 | **Aplicando merge em branchs** 77 | ```bash 78 | git merge nome-branch // precisa estar na branch de destino 79 | ``` 80 | 81 | **Visualizando todas as branches existentes no repositório** 82 | ```bash 83 | git branch 84 | ``` 85 | 86 | **Deletando uma branch local** 87 | ```bash 88 | git branch -D nome-branch 89 | ``` 90 | 91 | **Deletando uma branch remoto** 92 | ```bash 93 | git push origin :nome-branch 94 | ``` 95 | 96 | -------------------------------------------------------------------------------- /comandos/stage-area.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com arquivos na stage area 2 | 3 | **1 Visualizando a última alteração feita** 4 | ```bash 5 | git diff // no diretório de trabalho (compara Work Directory com Staging Area) 6 | 7 | git diff --staged // na staged area (compara Staging Area com .Git Directory) 8 | 9 | git diff nome-arquivo.extensao // Visualiza alterações específicas de um commit 10 | 11 | git diff --name-only // Visualiza o nome dos arquivos alterados 12 | 13 | git diff -w // Visualiza alterações ignorando espaços 14 | 15 | git show hash-commit // Visuliza todas as modificações feitas no respectivo commit 16 | ``` 17 | 18 | **2 Revertendo alterações feitas em arquivos** (Arquivos que estão na área de trabalho) 19 | ```bash 20 | git checkout -- nome-do-arquivo.extensao 21 | ``` 22 | 23 | **3 Removendo aquivos da stage area** 24 | ```bash 25 | git reset HEAD nome-do-aquivo.extensao 26 | ``` -------------------------------------------------------------------------------- /comandos/tags.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com Tags 2 | 3 | **1 Crianddo Lightweight Tag** 4 | 5 | ```bash 6 | # É recomendado utiliza-la somente localmente. 7 | git tag "1.0.0" 8 | ``` 9 | 10 | **2 Crianddo Annotated Tag** 11 | 12 | ```bash 13 | # É recomendado utiliza-la para servidos, ou seja tags de release. 14 | git tag -a "1.0.0" -m "1.0.0" 15 | ``` 16 | 17 | **3 Listando as Tags criadas** 18 | 19 | ```bash 20 | git tag 21 | ``` 22 | 23 | **4 Enviando as Tags criadas para o servidor** 24 | 25 | ```bash 26 | # enviará as tags do tipo Annotated 27 | git push origin master --follow-tags 28 | ``` -------------------------------------------------------------------------------- /comandos/trabalhando-git-flow.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com Git Flow 2 | 3 | ### Git Flow 4 | 5 | > Aqui é apenas um resumo 6 | > Nem todos os comandos disponíveis estão cobertos aqui, apenas os mais importantes deles 7 | 8 | **O que é?** 9 | 10 | > O git-flow é um conjunto de extensões para o git que provê operações de alto-nível para repositórios usando o modelo de branches do Vincent Driessen 11 | > Você pode continuar a usar o git e todos os comandos dele normalmente como você já conhece, o git flow é apenas uma coleção de ferramentas 12 | 13 | *Em poucas palavras* 14 | > Uma forma de organização usando branches 15 | 16 | **Funcionamento** 17 | 18 | *Git Flow é divido em 3 tageamentos:* 19 | - Funcionalidades / Feature; 20 | - Versão / Release; 21 | - Hotfix 22 | 23 | ### Instalação 24 | 25 | 26 | **Ubuntu/Debian-based** 27 | ```bash 28 | sudo apt-get install git-flow 29 | ``` 30 | 31 | 32 | **Mac OS X** 33 | ```bash 34 | brew install git-flow-avh 35 | ``` 36 | 37 | 38 | **Windows** 39 | *(Cygwin)* 40 | ```bash 41 | wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash 42 | ``` 43 | *Ou* 44 | ```bash 45 | https://git-for-windows.github.io/ 46 | ``` 47 | > A partir do Git Windows 2.6.4, GitFlow (AVH) está incluído. 48 | 49 | 50 | **Manual** 51 | ```bash 52 | wget --no-check-certificate -q https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh && bash gitflow-installer.sh install stable; rm gitflow-installer.sh 53 | ``` 54 | 55 | 56 | ### Começando com Git Flow 57 | 58 | 59 | **Inicialização** 60 | *Para começar a usar Git Flow em seu projeto, você precisa iniciá-lo* 61 | ```bash 62 | git flow init 63 | ``` 64 | 65 | 66 | ## Funcionalidade / Features 67 | > O desenvolvimento de uma nova funcionalidade começa a partir do ponto atual de seu branch DEVELOP 68 | 69 | **Começar uma nova funcionalidade** 70 | ```bash 71 | git flow feature start MINHA_FUNCIONALIDADE 72 | ``` 73 | > Criar um branch (baseado no develop) e automaticamente irá dar uma checkout nesse branch 74 | 75 | **Finalizando uma funcionalidade** 76 | ```bash 77 | git flow feature finish MINHA_FUNCIONALIDADE 78 | ``` 79 | > Esse comando irá executar as seguintes ações: 80 | > Merge com a branch develop; 81 | > Deleta a branch funcionalidade; 82 | > Checkout na branch develop; 83 | > Para finalizar uma funcionalidade, você deve executar esse comando dentro do branch funcionalidade que deseja finalizar 84 | 85 | **Publicando uma funcionalidade** 86 | ```bash 87 | git flow feature publish MINHA_FUNCIONALIDADE 88 | ``` 89 | 90 | **Obter uma funcionalidade** 91 | ```bash 92 | git flow feature pull MINHA_FUNCIONALIDADE 93 | ``` 94 | > Simplesmente um pull de uma branch 95 | 96 | ## Versões / Release 97 | > Auxilia a preparação de uma nova versão de produção 98 | 99 | **Começar uma nova versão** 100 | ```bash 101 | git flow release start MINHA_VERSAO 102 | ``` 103 | > Cria um branch baseado no develop 104 | 105 | **Publicando uma versão** 106 | ```bash 107 | git flow release publish MINHA_VERSAO 108 | ``` 109 | > É sensato publicar o branch da versão depois de criá-lo, para permitir commits por outros desenvolvedores 110 | 111 | **Finalizar uma versão** 112 | ```bash 113 | git flow release finish MINHA_VERSAO 114 | ``` 115 | > Na finalização de uma versão, ele executa várias ações: 116 | > Faz merge do branch MINHA_VERSAO no MASTER; 117 | > Faz merge do branch MINHA_VERSAO e um checkout no DEVELOP; 118 | > Etiqueta a versão com seu nome; 119 | > Remove o branch MINHA_VERSAO; 120 | 121 | ## Hotfix 122 | > Os hotfixes surgem da necessidade de agir imediatamente sobre uma situação indesejada na versão de produção ativa 123 | 124 | **Criando um hotfix** 125 | ```bash 126 | git flow hotfix start MEU_HOTFIX 127 | ``` 128 | > Cria um branch baseado no MASTER 129 | > O argumento MEU_HOTFIX nesse caso marca a versão defeituosa na produção 130 | 131 | **Finalizar um hotfix** 132 | ```bash 133 | git flow hotfix finish MEU_HOTFIX 134 | ``` 135 | > Ele irá fazer um merge no MASTER e no DEVELOP 136 | > O merge no MASTER será etiquetado 137 | 138 | ### Resumo dos Comandos 139 | ![Git Flow Comandos] (../images/git-flow-comandos.png) 140 | 141 | ### Fonte 142 | Git-Flow: https://github.com/nvie/gitflow 143 | Documentação: http://danielkummer.github.io/git-flow-cheatsheet/ 144 | -------------------------------------------------------------------------------- /comandos/trabalhando-git-github.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com Git e GitHub 2 | 3 | **1 Gerando uma chave SSH de autenticação no Git bash** 4 | ```bash 5 | ssh-keygen 6 | 7 | # ler a chave publica no linux 8 | cat /home//.ssh/id_rsa.pub 9 | 10 | # ler a chave publica no mac 11 | cat /Users//.ssh/id_rsa.pub 12 | ``` 13 | 14 | **2 Verificar se existe chave SSH configurada** 15 | ```bash 16 | ls -al ~/.ssh 17 | ``` 18 | 19 | **3 Configurando a chave SSH no GitHub** 20 | ```bash 21 | // Insira um nome para identificar a sua máquina no Github 22 | 23 | // No Github vá em "Settings > SSH Keys" (Title + Key) 24 | ``` 25 | 26 | **4 Verificar qual chave SSH está setada** 27 | ```bash 28 | ssh -T 29 | ``` 30 | 31 | **5 Crie um repositorio no GitHub** 32 | ```bash 33 | Acesse "Repositories" > New 34 | ``` 35 | 36 | **6 Clonando o repositório para a sua máquina** 37 | ```bash 38 | No Github copie a URL SSH 39 | 40 | No gitBash (git clone + url-repositorio) 41 | ``` 42 | 43 | **7 Inserir caminho do repositorio remoto** 44 | ```bash 45 | git remote add origin url-repositorio // origin é o nome do repositório remoto 46 | ``` 47 | 48 | **8 Remover caminho do repositorio remoto** 49 | ```bash 50 | git remote rm origin // origin é o nome do repositório remoto 51 | ``` 52 | 53 | **9 Verificar caminho do repositorio remoto que está setado** 54 | ```bash 55 | git remote -v 56 | ``` 57 | 58 | **10 Exibir informações sobre o repositório remoto** 59 | ```bash 60 | git remote show origin 61 | ``` 62 | 63 | **11 Altera a url do repositório remoto (Máquina local > Github)** 64 | ```bash 65 | git remote set-url origin url-repositorio 66 | ``` 67 | 68 | **12 Adicionando mais de um repositório remoto** 69 | ```bash 70 | git remote add 71 | 72 | Exemplo: 73 | git remote add github git@github.com:theandersonn/comandos-git.git 74 | git remote add bitbucket git@github.com:theandersonn/comandos-git.git 75 | ``` 76 | 77 | **13 Renomeando repositório remoto** 78 | ```bash 79 | git remote rename 80 | ``` 81 | 82 | **14 Enviando as modificações para o GitHub** 83 | ```bash 84 | git push origin 85 | ``` 86 | 87 | **15 Deletando branch remota** 88 | ```bash 89 | git push origin nome-branch --delete 90 | git push origin :nome-da-branch 91 | ``` 92 | 93 | **16 Baixando as modificações do GitHub para a sua máquina** (Se o repositório for de sua autoria) 94 | ```bash 95 | git pull origin 96 | ``` 97 | 98 | **17 Baixando o conteúdo de uma branch remota e locomovendo-se para esta nova branch** 99 | ```bash 100 | git checkout -b origin/ 101 | ``` 102 | 103 | **18 Forçando git pull** (Os arquivos que estão locais serão subscritos) 104 | ```bash 105 | git fetch --all 106 | git reset --hard origin/ 107 | git pull origin 108 | ``` 109 | 110 | **19 Mantendo o Repositório Forkado atualizado com o original** 111 | ```bash 112 | // Nesse momento o nosso repositório chama-se origin; 113 | // Vamos criar um novo chamado "upstream" que apontará para o original. 114 | 115 | git remote add upstream insira-url-ssh-do-repositorio-original 116 | ``` 117 | 118 | **20 Sincronizando os dois repositórios** (upstream e original) 119 | ```bash 120 | git fetch upstream 121 | ``` 122 | 123 | **21 Aplicando merge nas atualizações do fork para a branch master do nosso repositório** 124 | ```bash 125 | git merge upstream/master 126 | ``` 127 | 128 | **22 Fechar issues através de commits** 129 | ```bash 130 | git commit -m "Mensagem commit - fix issue IDIssue" 131 | ``` 132 | 133 | O ID da Issue você consegue na URL da mesma. Ex.: `issues/8` - 8. 134 | 135 | Outras palavras chave que podemos usar para fechamento de Issues: `fix, fixes, fixed, close, closes, closed, resolve, resolves, resolved` 136 | -------------------------------------------------------------------------------- /comandos/versionamento-repositorios.md: -------------------------------------------------------------------------------- 1 | # Criando e versionando repositórios 2 | 3 | **2.1 Criando Repositório** 4 | ```bash 5 | mkdir nome-do-repositorio 6 | ``` 7 | 8 | **2.2 Iniciando o Versionamento neste repositório** 9 | ```bash 10 | git init 11 | ``` 12 | 13 | **2.3 Criando arquivos através do terminal** 14 | ```bash 15 | touch nome-aquivo.extensao 16 | ``` 17 | 18 | **2.4 Listar o controle de diretório** 19 | ```bash 20 | ls -a 21 | ``` 22 | 23 | **2.5 Verifica arquivos existentes no projeto** 24 | ```bash 25 | ls -la 26 | ``` 27 | 28 | **2.6 Verificar Status do repositorio** 29 | ```bash 30 | git status 31 | ``` 32 | 33 | **2.7 Separando arquivos para não serem versionados** 34 | ```bash 35 | psds/ (diretório) 36 | alteracoes.php 37 | anotacoes.txt 38 | *.orig. // arquivos gerados pela merge toll 39 | ``` 40 | -------------------------------------------------------------------------------- /comandos/working-directory.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com arquivos na working directory 2 | 3 | **1 Adiciona aquivos para serem commitados** 4 | ```bash 5 | 1. maneira: git add nome-do-aquivo.extensao 6 | 7 | 2. maneira: git add *.extensao 8 | 9 | 3. maneira: git add . //add todos 10 | 11 | 4. maneira: git add --all //add todos incluindo deletados 12 | ``` 13 | 14 | **2 Removendo arquivo da Working Directory** 15 | ```bash 16 | git checkout nome-arquivo.extensao 17 | ``` 18 | 19 | **3 Removendo arquivo com status "deleted" da arvore** 20 | ```bash 21 | git rm nome-file.extensao 22 | ``` 23 | 24 | **4 Removendo arquivo(s) com status "deleted" da arvore** 25 | ```bash 26 | git add --all 27 | ``` 28 | 29 | **5 Deletando todos os arquivos da arvore e do projeto** 30 | ```bash 31 | git rm -rf . ( CUIDADO ) 32 | ``` 33 | 34 | **6 Removendo pastas da arvore** 35 | ```bash 36 | git rm -r nome-diretorio 37 | ``` 38 | 39 | **7 Removendo pastas da staged area e git directory** 40 | ```bash 41 | git rm -rf nome-diretorio/ --cached 42 | ``` 43 | -------------------------------------------------------------------------------- /images/git-flow-comandos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theandersonn/comandos-git/918e63a429ef090d1485c77b18cef331035af207/images/git-flow-comandos.png -------------------------------------------------------------------------------- /images/git-super-poderes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theandersonn/comandos-git/918e63a429ef090d1485c77b18cef331035af207/images/git-super-poderes.png -------------------------------------------------------------------------------- /sugestoes/cursos-palestras.md: -------------------------------------------------------------------------------- 1 | # Recomendações de cursos e palestras 2 | 3 | **Cursos** 4 | 5 | - [Alura - Controle e compartilhe seu código](https://www.alura.com.br/curso-online-git) 6 | - [Fernando Daciuk - Curso Git e Github Ninja](http://blog.da2k.com.br/curso-git-e-github-ninja/) 7 | - [RBtech - Básico de Git](https://www.youtube.com/playlist?list=PLInBAd9OZCzzHBJjLFZzRl6DgUmOeG3H0) 8 | - [Renato França - GitHub para n00bs](https://www.youtube.com/playlist?list=PLIcowd3mjrFjdFDTFcHKHdgTqYZZdMyKH) 9 | - [Rodrigo Branas - Aula de Git e Github](https://www.youtube.com/playlist?list=PLQCmSnNFVYnRdgxOC_ufH58NxlmM6VYd1) 10 | - [Willian Justen - Git e Github para Iniciantes](https://www.youtube.com/watch?v=IBClN6VpJDw&list=PLlAbYrWSYTiPA2iEiQ2PF_A9j__C4hi0A) 11 | 12 | **Palestras** 13 | 14 | - [Bruno Calheira - Use o Git e Perca o Medo de Errar](https://www.youtube.com/watch?v=EsNWCNx2aOs) 15 | - [Danilo Bellini - Introdução ao Git e Github](https://www.youtube.com/watch?v=Fc_UC5SywuU) 16 | - [Fabio Akita - Screencast - Começando com o Git](http://www.akitaonrails.com/2010/08/17/screencast-comecando-com-git) 17 | - [Gustavo Mathias - Git e GitHub para iniciantes](https://www.youtube.com/watch?v=TReVFOxhh7E) 18 | - [Leo Baiano - Montando um ambiente de desenvolvimento WordPress utilizando Composer e Git](https://www.youtube.com/watch?v=vGWFlG10YFM) 19 | - [Loiane Groner - Git e Github para iniciantes](https://www.youtube.com/watch?v=UMhskLXJuq4) 20 | 21 | -------------------------------------------------------------------------------- /sugestoes/ferramentas.md: -------------------------------------------------------------------------------- 1 | # Sugestões de ferramentas 2 | 3 | ###Markable 4 | 5 | * [Editor online de Markdown:](http://markable.in/) 6 | 7 | ###Dillinger 8 | 9 | * [Editor online de Markdown:](http://dillinger.io/) 10 | 11 | ###StackEdit 12 | 13 | * [Editor online de Markdown:](https://stackedit.io/) 14 | 15 | ###Haroopad 16 | 17 | * [Editor de Markdown](http://woliveiras.com.br/posts/haroopad-um-editor-markdown-maneiro/) 18 | 19 | ###Plugins do SublimeText (Git e Markdown) 20 | 21 | * GitGutter 22 | * Markdown Extended 23 | * Markdown Preview 24 | -------------------------------------------------------------------------------- /sugestoes/githosting.md: -------------------------------------------------------------------------------- 1 | # GitHosting - Serviços online 2 | 3 | * [Unfuddle](https://unfuddle.com/) 4 | * [Bitbucket](https://bitbucket.org/) 5 | * [GitLab](https://about.gitlab.com/) 6 | -------------------------------------------------------------------------------- /sugestoes/livros.md: -------------------------------------------------------------------------------- 1 | # Sugestões de livros 2 | 3 | - [Git Internals PluralSight](https://github.com/pluralsight/git-internals-pdf) 4 | - [Git in the Trenches](http://cbx33.github.com/gitt) 5 | - [Git Training](https://training.github.com/kit) 6 | - [Pro-Git EN](https://git-scm.com/book/en/v1) 7 | - [Pro-Git PT](https://leanpub.com/pro-git/read) 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sugestoes/slides.md: -------------------------------------------------------------------------------- 1 | # Slides 2 | 3 | - [Bruno Calheira - Use o git e perca o medo de errar](http://pt.slideshare.net/brunocalheira/use-o-git-e-perca-o-medo-de-errar) 4 | - [Leo Baiano - Montando um ambiente de desenvolvimento WordPress utilizando Composer e Git](http://pt.slideshare.net/leobaiano1/montando-um-ambiente-de-desenvolvimento-wordpress-utilizando-composer-e-git) 5 | - [theandersonn - Conhecendo os super poderes do Git](http://pt.slideshare.net/theandersonn/conhecendo-os-super-poderes-do-git) 6 | - [theandersonn - Introdução ao Git e GitHub](http://pt.slideshare.net/theandersonn/intruducao-aogitegithub) --------------------------------------------------------------------------------