Skip to content

Instantly share code, notes, and snippets.

@renatoassis01
Last active January 24, 2022 14:43
Show Gist options
  • Save renatoassis01/13d660781257b8700abc94ab9bd9267a to your computer and use it in GitHub Desktop.
Save renatoassis01/13d660781257b8700abc94ab9bd9267a to your computer and use it in GitHub Desktop.
dicas deu ruim e dicas gerais sobre o git

Renomeando o branch local

git branch -m novo_nome

Renomeando o branch remoto

    git push origin -u novo_nome
    git push origin --delete velho_nome

Alterando o último commit com git commit --amend

git add .

depois faça

git commit --ammend -m "alterar também a mensagem"

ou caso não queria alterar a mensagem

git commit --amend --no-edit

** Não faça --amend é um repositório que já tenha feito push

Atualizando as referências locais com a referências do remoto

git fetch

por exemplo se um branch foi renomeado é só rodar esse comando em todos os repositórios locais para pegar o novo nome

outro exemplo: foi criar um branch remote, mas vc não consegue fazer checkout desse branch no repositório local

Atualizando as referências locais com a referências do remoto(sincroniza branch deletados)

git fetch --prune

Com a flag --prune ele vai atualizar o repositório local com o remote e também remover os branchs que já foram deletados. Caso tenha alterações locais commitadas ela fará o pull automaticamente.

Desfazendo último commit

git reset HEAD~ --soft

Com esse comando remove o último comit e volta os arquivos do comit para a area de stage. Não deleta os arquivos

Desfazendo o último commit, mas deletando os arquivos

git reset HEAD~ --hard

Com esse comando você remove o último commit e DELETA os arquivos.

Refazendo ou desfazendo algo com git reflog

ele guarda o histórico de tudo o que é feito. Com ele você consegue visualizar todas as coisas que foram feitas por você

git reflog

depois rode esse aqui:

git reset HEAD@{1}

{x} indica o índice do histórico você deseja refazer ou desfazer

se reflog envolver criação ou exclusão de arquivo rode o comando git restore .

git reflog salva vidas.

Nunca use git push --force

(à não ser que esteja trabalhando em um branch remoto sozinho)

use:

git push --force-with-lease

com essa opção só vai sobrescrever se as alterações locais e remoto forem iguais.

Fazendo backup da área de trabalho do git

git stash

ou um stash com uma descrição

git stash create/save <mensagem>

adicionando arquivos untracked

git stash save "descrição" --include-untracked

Criando um branch apartir de um deterninado stash

git stash branch <nome-da-branch> stash@{1}

Criando um branch apartir de um stash

git stash branch <nome-da-branch>

Movendo um commit para o branch correto

git checkout <branch_errado>

git log

visualizar o id do commit errado

git checkout <branch_correto>

git cherry-pick <commit-id>

git checkout <branch_errado>

git revert <commit-id>

Adicionando alias no git

sintaxe:

git config --global alias.<atalho> '<comandos>'

Exemplo:

git config --global alias.co checkout

Para chamar o alias:

git co

Talvez você queira executar um comando externo, em vez de um alias no Git. Nesse caso, você inicia o comando com um ! Isso é útil se você escrever suas próprias ferramentas que funcionam com um repositório Git.

exemplo:

 git config --global alias.visual '!gitk'

Para chamar o alias:

git visual

Você pode definir uma função também como alias da seguinte forma:

git config --global alias.commit-push '!f() { git add -A && git commit -m "$@" && git push; }; f'

Deletar branch locais com merge já realizados

git branch --merged | egrep -v "(^\*|master|main|develop|qa)" | xargs git branch -d

(^*|master|main|develop|qa) os branch que devem ser ignorados

https://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git/91795#91795

Mudar a origem de um branch

git rebase --onto origem anterior branch

Considere a seguinte situação:

O branch tarefa-2 foi criador a partir do tarefa-1. No entanto o branch tarefa-2 deveria ser criado apartir da main. Para corrigir a origem.

Exemplo:

git rebase --onto main tarefa-1 tarefa-2

https://jtemporal.com/corrigindo-a-origem-de-um-branch-com-git-rebase/

Sobre o git ignorar o case no nome das pastas: https://git-scm.com/docs/git-config/2.14.6

Para que ele não ignore é só rodar esse comando para configurar globalmente: git config --global core.ignorecase false Ou esse pra alterar só local: git config core.ignorecase false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment