Git, o básico que vai fazer você parecer um mestre
Recomendo copiar esse conteudo e usar ele como consulta
Gerenciamento de Versão :
Major.Minor.Patch
Incremento | Descrição |
---|---|
Major | Quebra de funcionalidade |
Minor | Nova Feature |
Patch | Concerto+Qualquer outra coisa |
Comandos Basicos
Iniciar Repositorio
git init
Checa o status do projeto, o que foi e não foi modificado e o status dos arquivos que estão sendo observados
git status
Para ver as mensagens de commits
git log
Mostra um registro de todas as mudanças feitas para o cabeçalho repositorio local
git reflog
Operações com Arquivos
Adicionar uma Arquivo
git add "nome_do_arquivo"
Adicionar todos os Arquivos
git add .
Para mover ou renomear arquivo
git mv <old_file> <new_file>
Para recuperar alterações de um arquivo, ou versões passadas dele, use:
você pode conseguir esse número usando "git log"
git checkout "numero_da_modificação" -- "nome_do_arquivo"
Commit
Adicionar uma mensagem ao commit
git commit -m "mensagem"
Para modificar a mensagem do ultimo commit, ele cria um novo commit que subistitui o antigo commit (Fique atento pra não aplicar em commit que já foram dado push):
git commit "mensagem" --amend
Para modificar o conteudo do ultimo commit, adicionando novo conteudo, mas ele cria um novo commit que subistitui o antigo commit (Fique atento pra não aplicar em commit que já foram dado push):
git commit --amend --no-edit
Criar um commit que desfaz um commit anterior
git revert "commit_id"
Diff
Para mostrar as diferenças
git diff
Para mostrar a diferenã entre dois commits
git diff <commit_id1>..<commit_id2>
Show
E para só ver a ultima modificação use:
git show
Para ver as modificações feitas em um arquivo, use:
git show "numero_da_modificaçãos"
Remover
Para remover o arquivo da arvore de trabalho
git rm "nome_do_arq"
Para remover um arquivo que foi removido mas ainda está operando
git rm --cached <file_name>
Remover pasta do projeto git
git rm -rf --cached folder1/
Clean
Serve para limpar o repositorio dos varios arquivos que um build ou coisa do tipo podem criar:
O paretro -n irá mostrar os arquivos que vão ser apagados
O paretro -f irá de fato apagar os arquivos
git clean -n
git clean -f
Observar arquivo
Para assumir que um arquivo não é modificado
git update-index --assume-unchanged "arquivo"
Para voltar a monitorar modificações
git update-index --no-assume-unchanged "arquivo"
Reset
Para remover uma arquivo que sem querer foi dado
add
nele
git reset -- Nome_do_arquivo
Discartar todas as alterações já feitas e mover o cabeçalho para um commit especifico
git reset --hard <commit_id>
Move o cabeçalho para um commit especifico mas preserva as mudanças feitas
git reset --soft <commit_id>
Move o cabeçalho para um numero de commits atras, mas preservando as mudanças feitas
git reset --soft <commit_id> HEAD~int
Tag
Lista todas as tags do projeto
git tag
Cria uma tag apontando pro ultimo commit feito
git tag nome_tag
git tag nome_tag -m "mensagem que acompanha a tag"
Lista todas as tags e suas descrições
git tag -n
Pra mandar um tag pro repositorio usa:
git push origin nome_tag
# manga todas as tags
git push origin --tag
Branchs
Para ver todas as branch que existem no projeto, use:
git branch
Para criar ramificações(branchs) do código, use:
git branch "nome_da_branch_nova"
Para deletar uma branch, use:
git branch -D "nome_da_branch"
Para deletar branch remoto
git push origin -d "nome_da_branch"
Para listar todas as branchs remotas
git branch -r
Para mudar da branch principal para outra, use:
git checkout "nome_da_branch"
Para unir o conteudo das branch, use:
git merge "nome_da_branch"
Cancelar o marge em caso de conflito
git merge --abort
Operações de Repositorios Remotos
Para listar os repositorios remotos
git remote
Para adicionar um repositorio remoto
git remote add "nome" "url"
Para mandar o repositório para o github, use:
git push
Caso seja a primeira vez que manda algo para o repositório, use:
git push -u origin master
Para clonar um projeto já iniciado, use:
git clone "url_do_repositório"
Para trazer as alterações do repositório para o projeto, use:
git pull
para trazer as alterações do repositorio, mas os commits que form pegos do repositorio vão estar sendo colocados na fila, atras dos meu no repo local
git pull --rebase
Para poder fazer um rebase, mas sem a necessidade de comitar o que você fez até o momento, você pode fazer o stash, que guarda em separado suas auteraçoes, para que você possa depois de fazer o rebase, aplicar elas denovo
# Remove e guarda as alterações já feitas
git stash
# Lista as alterações armazenadas
git stash list
# Reaplica as ultimas alterações guardas no stash
git stash pop
Para trazer as alterações do repositório para o projeto, use:
git pull <remote_name> <remote_branch>
Contribuição, Gitflow
-
pra resolver problemas é criado uma branch
-
Pode se separar o git flow em 2 tipos de branchs
- Branches principais
- Master
- Developer
- Branches de Suporte
- Feature
- Release
- Hotfix
Aplicação
-
Master: é usada para mandar os commit dos release para produção
-
Develop: é criada apartir da Maste e conterá as fetures estaveis que seram mergeadas em uma branche de release
-
Features: É criada através da Develop
-
Nomeação de branch
feature/nova-feature
Ciclo de vida
Feature
Master[1.0] -> Develop -> Feature -> Develop -> Release -> Master[2.0]
Hotfix
Master[2.0] -> Hotfix -> Master[2.1]
Uso
Para iniciar o uso de gitflow
git flow init
Depois você nomeia as branches
Para adicionar feature
git flow feature start nova-funcao
Para fazer o merge na develop
git flow feature finish sum
Para fazer uma release
git flow release start 0.1.0
Para mandar a release para a master
git flow release finish 0.1.0
EDIT
Me chamaram a atenção pra uma parada que eu acabei deixando passa quando tava escreverndo esse arquigo, os comando relacionados a commit
em especial os que modificam commits previos, só recomento usar se os commits em questão não foram mandados pro remoto, pos se for o caso, na hora de enviar o commit modificado, ocorrerá um problema visto que o commit foi sobre escrito pelo novo com as modificações.
Uma solução pra isso, é na hora do push, usar a flag -f
, mas não recomendo, a não ser que você seja a unica pessoa mexendo na branch em questão e isso não vá afetar outros membros do seu time (Mas não recomento). Ou você tenha plena confiança que é o certo a se fazer