Comandos usados com frequência
Alguns comandos do Git que uso com frequência, mas às vezes continuo esquecendo.
Restore
Restaurar um arquivo
git restore --source <branch_name> <file_relative_path>Restaurar para a branch main
git restore --source main pages/docs/index.tsxRestaurar para o último commit na main
git restore --source master~1 pages/docs/index.tsxRestaurar para o último commit na branch atual
git restore -source=HEAD~1 pages/docs/index.tsxRestaurar uma pasta
git restore --source <branch_name> <folder_relative_path>
git restore -source=HEAD~1 pages/docsreferências : git-tower
Rebase
Iniciar um rebase
git rebase <upstream> <branch_name>Fazer pull com rebase
git pull --rebase <upstream> <branch_name>Depois de resolver os conflitos e adicionar ao stage
git rebase --continuePara cancelar o processo de rebase
git rebase --abortreferências : git docs
Mover o último commit para outra branch
Quando você commita por engano na branch_a, mas na verdade queria commitar na branch_b
git checkout branch_a
git reset HEAD~1
git checkout -b branch_b
# ou
git checkout branch_b
git add --all
git commit -m "commit message"Remover uma tag criada
git tag -d <tag_name>Renomear uma tag
Criar um alias da tag com um novo nome
git tag old_name new_nameRemover a tag antiga localmente
git tag -d old_nameRemover a tag no remoto, com um checkout
git remote -vO terceiro argumento é o seu repositório remoto. No nosso exemplo, origin
git push origin :refs/tags/old_namePor fim, adicione a nova tag ao repositório remoto. A nova tag só será adicionada depois disso.
git push origin --tagsRepita esse processo em todos os remotos.
referência: stackoverflow
Usar uma chave SSH para assinar um commit
Isso só funciona com git 2.34.0 ou mais recente e openssh 8.0 ou mais recente.
Configure o git para usar SSH na assinatura de commits e diga ao git qual chave deve ser usada
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/examplekeyUse a flag -S ao assinar seus commits:
git commit -S -m "My commit message"Ou diga ao git para assinar seus commits automaticamente
git config --global commit.gpgsign trueUsar GPG para assinar um commit
Listar todas as suas chaves
gpg --list-secret-keys | grep ^sec
sec 3185S/7DD21DBA 2014-05-06 [expires: 2015-05-05]
# ^^^^^^^^Precisamos desse valor hexadecimal depois da barra. Adicione esse valor à sua configuração do git.
git config --global user.signingkey 7DD21DBASubstitua 7DD21DBA pelo valor hexadecimal do último comando. Para usar essa chave em apenas um repositório, rode o último comando sem o --global. Ao fazer um commit, adicione a opção -s.
git commit -S -m 'Testing an signed commit.'Para confirmar:
git log --show-signatureObtendo a diferença entre dois repositórios
# vá até o repo_a
cd /home/user/repo_a
# adicione o repo_b como um remoto
git remote add -f b /home/user/repo_b
# veja as diferenças na branch main
git diff main remotes/b/main
# quando terminar, remova o remoto
git remote rm breferência: git: getting the difference between two repositories
Rodrigo de Avila