Configurações básicas e globais
Usuário e email para serem exibidos nos commites:
git config --global user.name "[seu nome]"
git config --global user.email [seu e-mail]
Cache local para credenciais de autenticação (Usuário/Senha):
Você pode armazenar em cache suas credenciais de autenticação, evitando assim redigitar o nome de usuário e a senha toda vez que você realizar um commit.
git config --global credential.helper cache
Desabilitar verificação de Certificado digital
Durante a execução
GIT_SSL_NO_VERIFY=true git clone https://username@git.example.com/scm/repository.gitGlobal
git config --global http.sslVerify falseRedefinir tempo de expiração do registro de log (reflog):
Global
git config --global gc.reflogExpire 180.days.agoSistema
git config --system gc.reflogExpire 12.months.agoProjeto
git config gc.reflogExpire never
Tratamento de espaços em branco
git config --global apply.whitespace nowarn
git config --global core.whitespace nowarn
Definição de cores para o modo console:
git config --global color.branch auto
git config --global color.diff auto
git config --global color.status auto
git config --global color.interactive auto
Personalização individual de projeto para o diretório de git hooks
git config core.hooksPath .git-hooks
Personalização de permissões do sistema de arquivos para o diretório de projeto git
AtençãoDefinido falso para o projeto ativo
core.fileMode
não é a melhor prática e deve ser usada com cuidado. Essa configuração abrange apenas o bit de modo executável e nunca os bits de leitura / gravação. Em muitos casos, tem-se a ilusão de necessitar dessa configuração porque executou comandos para tornar todos os seus arquivos executáveis, como chmod -R 777. Mas na maioria dos projetos, a maioria dos arquivos não precisa e não deve ser executável por motivos de segurança. A maneira correta de resolver esse tipo de situação é manipular a permissão de pasta e arquivo separadamente, com algo como:find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write find . -type f -exec chmod a+rw {} \; # Make files read/writeEstes comandos são melhores indicados, e na maioria dos casos não será necessário utilizarcore.fileMode
, exceto em ambientes extremamente raros.
git config core.fileMode falseO parametro
-c
pode ser usado para definir esta opção em comandos únicos:
git -c core.fileMode=false diffE o --global fará com que seja o comportamento padrão para o usuário conectado.
git config --global core.fileMode false
Definição Global de encode para Graphic User Inteface (GUI)
git config --global gui.encoding utf-8
Definir editor de texto padrão para o diretório de trabalho:
git config --global core.editor "vim";
Outros editores
Atom $ git config --global core.editor "atom --wait" nano $ git config --global core.editor "nano -w" BBEdit (Mac, with command line tools) $ git config --global core.editor "bbedit -w" Sublime Text (Mac) $ git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl -n -w" Sublime Text (Win, 32-bit install) $ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublime_text.exe' -w" Sublime Text (Win, 64-bit install) $ git config --global core.editor "'c:/program files/sublime text 3/sublime_text.exe' -w" Notepad++ (Win, 32-bit install) $ git config --global core.editor "'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" Notepad++ (Win, 64-bit install) $ git config --global core.editor "'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" Kate (Linux) $ git config --global core.editor "kate" Gedit (Linux) $ git config --global core.editor "gedit --wait --new-window" Scratch (Linux) $ git config --global core.editor "scratch-text-editor" Emacs $ git config --global core.editor "emacs" VS Code $ git config --global core.editor "code --wait"
Definir ferramenta de merge
git config --global merge.tool vimdiffDefinir arquivos a serem ignorados
git config --global core.excludesfile ~/.gitignoreListar configurações de sessão
git config --listRemover configurações
git config --list --show-origin
git config --global --unset gui.encodingEditar configurações através do arquivo
git config --global --editConfiguração de case para gitignore no repositório ativo
git config core.ignorecase true
Configuração global de case para gitignore
git config --global core.ignorecase true
Listar todas as configurações definidas:
git config --global --list
Alias
Com o alias, você pode criar atalhos aos comando do GIT.Criar Atalhos de comando:
git config --global alias.co checkout;
git config --global alias.br branch;
git config --global alias.ci commit;
git config --global alias.st status;
git config --global alias.ls "log --stat";
git config --global alias.lg 'log --graph --oneline --decorate --all';
# Logs detalhados em modo gráfico
git config --global alias.lsg "log --stat --graph";
# Pull tags
git config --global alias.pt '!git tag -l | xargs git tag -d && git fetch -t';
# Desfaz modificações de stash
git config --global alias.stash-unapply '!git stash show -p | git apply -R';
# Exibe os aliases configurados para sessão do usuário
git config --global alias.aliases "config --get-regexp alias";
Para usar o atalho de comando, digite por exemplo:
git stExibir git status modo curto:
git co
git lg
git stash-unapply
git aliases
git st --shortDefinir configuração para git status modo curto:
Também é válido por projeto, bastando remover a diretiva
--global
git config --global status.short trueDefinir configuração para git status modo default:
git config --global status.short false
Limpar arquivos untracked do workdir
Git 2.11 and newer versions:
git clean -d -f .Older versions of Git:
git clean -d -f ""
Trabalhando com Repositórios
Criar repositóriomkdir [dir]
cd dir
git init
Cópia de trabalho de um repositório remoto
git clone [origin] [nova pasta]
Cópia de trabalho de branch específico em um repositório remoto
git clone -b [branchname] [remote-url]Cópia de trabalho parcial de um repositório remoto
parametro
--depth
define níveis a serem considerados.
git clone --depth [depth] [remote-url]Desfazer git clone --depth
git fetch --update-shallow # ouCópia de trabalho parcial de um ramo específico em um repositório remoto
git fetch --depth=[level] [remote-url]; # ou
git fetch --unshallow# Acessar todos os branches
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" git fetch origin
git clone [remote-url] --branch [name] --single-branch [folder]
Cópia de branch para outro repositório remoto
git push url://to/new/repository.git branch-to-move:new-branch-name
Acrescentando +uma URL remota ao diretório local
git remote add <alias-da-url> <url-do-projeto-original>
Adicionar arquivo(s) específicos ao próximo commit:
git add [arquivo1] [arquivo2] ...
git add -f [arquivo1]ou para adicionar todos aquivos apresentados no
git status
ao próximo commit:git add .
Remover arquivo do controle do repositório remoto:
git rm --cached [ARQUIVO]
Remover arquivo(s) do diretório de trabalho e do versionamento:
git rm [ARQUIVO]
git rm incolumepy/*.log
Renomear arquivo:
git mv [FILE_OLD_NAME] [FILE_NEW_NAME]
Mover arquivo(s):
git mv main.py incolumepy/
git mv *.log loggin/
Persistir as mudanças (commit)
git commit -m "[mensagem]"
git commit -m "[título mensagem]" -m "[descrição mensagem]"
git commit -m "[título mensagem]" -m "[descrição mensagem]" -m "[desfecho mensagem]"
Corrigir mensagem do ultimo commit
git commit --amend
git commit --amend -m "[mensagem]"Adicionar alterações ao ultimo commit
git add alterações/esquecidas.txt
git commit --amend --no-edit
Editar timestamp do ultimo commit
git commit --amend --date="Wed Feb 16 14:00 2011 +0100" --no-edit
git commit --amend --date="2024/04/01 12:34:56.789 -0300" --no-edit
GIT_COMMITTER_DATE="Wed Feb 16 14:00 2011 +0100" git commit --amend --no-edit
GIT_COMMITTER_DATE="2024/04/01 12:34:56.789 -0300" git commit --amend --no-edit
Copiar commit específico para branch ativo
git cherry-pick -X ours "[hash do commit]"
git cherry-pick -X theirs "[hash do commit]"
Copiar um conjunto de commits para branch ativo
cherry pick permite que você informe o ID do commit inicial e o ID commit final, que aqui chamarei de A e B, respectivamente.
git cherry-pick A^..B # inclui o primeiro commit
git cherry-pick A..B # exclui o primeiro commitTambém permite que você informe o hash do commit inicial e final.
git cherry-pick [hash do primeiro commit]^..[hash do ultimo commit] #inclui o primeiro commit
git cherry-pick [hash do primeiro commit]..[hash do ultimo commit] # exclui o primeiro commitTambém permite que você informe a posição relativa ao branch inicial e final.
git cherry-pick master~4 master~2
git pull
Enviar atualizações ao repositório remoto
git push [origin] [branch]
Visualizar status do repositório local
git status
Verificar mudanças em arquivos no workspace
git diff
Verificar mudanças em arquivos adicionados em staged
git diff --staged
Verifica mudanças entre commits
git diff [ID1] [ID2]
git diff HEAD~..
Histórico dos commits
git log
Histórico dos commits em modo gráfico
git log --graph
Histórico dos commits em uma linha
git log --oneline
Histórico dos commits: Verificar mudanças aplicadas
git log -p
Histórico dos commits em uma linha (5 últimos)
git log --oneline -n5
Histórico dos commits em uma linha modo gráfico
git log --oneline --graph
Histórico dos commits detalhado
git log --stat
Histórico dos commits detalhado em modo gráfico
git log --stat --graph
Verificar mudanças em um commit específico
git show [ID]
Verificar mudanças em um arquivo de um commit
git show [ID] [arquivo]
Verificar mudanças em uma atualização
git show -U1
Rollback do commit atual
- 1º modo: O ponteiro HEAD será movido para o commit anterior e as áreas de stage e working não serão alteradas.
$ git reset --soft HEAD~
- 2º Modo: O ponteiro HEAD será movido para o commit anterior ao atual, a área de stage terá o mesmo conteúdo do commit apontado pelo HEAD e o diretório de working não será modificado.
$ git reset HEAD~ ou $ git reset --mixed HEAD~
- 3º Modo: O ponteiro HEAD será movido para o commit anterior e as áreas de stage e working serão revertidas para o mesmo estado do commit apontado pelo HEAD descartando completamente todas as modificações realizadas. Cuidado com esse procedimento pois não há como recuperar!
git reset --hard HEAD
Voltando ao commit anterior, mas criando um novo commit
git revert HEAD
Voltando a um commit específico, e criando um novo commit
git revert --no-edit HEAD e27242bd40b9
Criando um workspace a partir de um novo repositório
echo "# a" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main #main ou master
git remote add origin git@github.com:britodfbr/a.git # github, gitlab, bitbucket, ou qualquer outro.
git push -u origin main
Adicionando um repositório remoto vazio em um workspace que contém commits
git remote add origin git@github.com:britodfbr/a.git
git branch -M main #main ou master
git push -u origin main
Adicionando um repositório remoto não vazio em um workspace que contém commits
git remote add origin git@github.com:britodfbr/a.git
git branch -M main #main ou master
git pull origin main --allow-unrelated-histories
git push -u origin main
Patches
Criando e aplicando vários patch de um branchgit checkout [branch]
git format-patch --stdout master > patch
git am --whitespace=nowarn patch
Trabalhando com Branches
Listar Branches disponíveis
git branch
git branch -a
Tornar Branches ativos
Somente um dos branches listados de cada vez.
git co branchname
Renomear um Branch
git branch -M [branchname] [newbranchname]
git co branchname
git branch -M [newbranchname]
Criar um Branch
git branch [branchname]
Criar e tornar ativo o novo branch
git checkout -b [branchname]
Criar um branch baseado em um ID de versionamento específico
git branch [branchname] [ID]
Persistir os branches criados no servidor remoto
git push --all
Persistir específicamente um branch criado no servidor remoto
git push [urlserver|aliasserver] [branchname]Exemplos:
git push origin frontend
Trocar de Branch
git checkout [branchname]
Verificar o branch atual
git branch
Verificar detalhes de branches
git branch -v
Deletar um branch local
Remove o branch local somente se foi publicado (push) e mescardo(merge) com seu branch remoto
git branch -d [branchname]
Equivalente ao
--delete --force
, não há garantias e não poderá ser recuperado.
git branch -D [branchname]
Deletar um branch remoto
git push [remote_name] --delete [branchname]
git push origin :frontend
Mesclar de branches [branch1] ao [branch2]
git checkout [branch2]
git merge [branch1]
git checkout [branch2]
git merge --no-ff --autostash [branch1]
Copiar arquivos entre branches
git restore --source branch_name dir0/b.txt dir1/c.txt
git restore -s branch_name dir0/b.txt dir1/c.txt
git checkout branch_name -- dir0/b.txt dir1/c.txt
git checkout branch_dst
git diff branch_dst..branch_src -- dir0/a.txt dir1/c.txt|git apply
Copiar diretórios entre branches
git restore --source branch_name dir0/ dir1/
git restore -s branch_name dir0/ dir1/
git checkout branch_name diretorio/a/ser/copiado/
Trabalhando com Tags
Para listar TAG existentes
git tag -ln
Para criar uma TAG
git tag [tagname]
Exemplo tag chamada v0.01 no commit atual execute:
git tag v0.01
Para criar uma TAG referente ao commit específico
git tag [tagname] [ID]exemplo tag v0.01 referente ao commit 4b8ef995de6d77:
git tag v0.01 4b8ef995de6d77Para criar uma TAG com comentário e referente ao commit específico
git tag -f -a [tagname] -m 'comentario' [ID]Exemplo:
git tag -f -a buildout_plone255 -m 'ambiente plone-2.5.5 com supervisor + haproxy' 87b29a
Para submete-la para o servidor remoto
git push --tags [alias-da-url] [branchname]Exemplo:
git push --tags origin master
git push --tags [remoto][tagname] -f
git push --tags origin Unreleased -f
git tag -d tagname
Para deletar uma TAG remota, execute uma das opções:
git push origin :tagname
git push -d origin tagname
git push --delete origin tagname
git push origin :refs/tags/tagname
Para voce mover para o commit da TAG execute:
git checkout v0.01
Para voce atualizar a listagens das TAG execute:
git pull --tags origin master
Para voce renomear TAG execute:
git tag new old
git tag -d old
git push origin :refs/tags/old
git push --tags
Estudo de caso Branch + Clone
git clone https://rbrito1978@code.google.com/p/templates-buildout/ou
git checkout p255
git branch -v
git clone -o origin -b p255 https://rbrito1978@code.google.com/p/templates-buildout/
Clone parcial da árvore
Baixar apenas ultimo nó da árvore
git clone https://rbrito1978@code.google.com/p/templates-buildout/ --depth 1
Restaurar todos os nós da árvore
git fetch --unshallow
Rebase de Branch no Master
- git co 1460729321
- git branch
* 1460729321 master- git pull --rebase origin master
- git co master
- git merge origin/1460729321
Trabalhando com stash
Detalhes podem ser acompanhados em Git: stash.O comando stash cria um Work In Progress (WIP), do estado atual do branch ativo, retornando-o para o momento anterior em que não havia alterações.
Isto é útil em situações em que há a necessidade de criar novos branches sem perder a codificação atual.
Criar stash:
Listar stash(es):
- git stash
Ativar último stash:
- git stash list
Ativar stash específico:
- git stash apply
Ativar stash com Changes not staged:
- git stash apply stash@{2}
Remover stash da pilha:
- git stash apply --index
Revert o último stash:
- git stash drop
$ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051... Revert "added file_size" stash@{2}: WIP on master: 21d80a5... added number to log $ git stash drop stash@{0} Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)
Revert um stash específico:
- git stash show -p | git apply -R
Criar um branch a partir de um stash:
- git stash show -p stash@{0} | git apply -R
Visualizar as diferenças do último stash:
- git stash branch
Visualizar as diferenças do um stash específico:
- git stash show -p
Remover todos os stash(es):
- git stash show -p stash@{1}
stash parcial:
- git stash clear
git stash -pCom este comando abrirá um subterminal, equivalente ao git add -i, com as seguintes opções:
y - stash this hunk n - do not stash this hunk q - quit; do not stash this hunk or any of the remaining ones a - stash this hunk and all later hunks in the file d - do not stash this hunk or any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help
git stash push -p -m "my commit message" ## ou
git stash push -m "My partial stash" -- app.config
reflogs - Registros Log de referência
O parametro
reflog
, permite gerenciar todo e qualquer tipo de alteração realizada no ponteiro HEAD.
Exibir reflogsgit reflog showAlterar período de reflogs em 180 dias
git config gc.reflogExpire 180.days.agoAlterar período de reflogs em 18 meses
git config gc.reflogExpire 18.months.ago
Alterar período de reflogs para ilimitado
git config gc.reflogExpire never
Git hooks
Git hooks são scripts que rodam automaticamente cada vez que você realiza alguma ação específica no repositório Git. Eles permitem modificar o comportamento original dos comandos Git e adicionar funcionalidades personalizadas em vários estados do ciclo de desenvolvimento.
Os Git Hooks são bastante aplicados para encorajar políticas de commit, alterar algo do ambiente dependendo do estado do repositório ou implementar fluxos para workflow de Integração Contínua.
Os scripts git hooks
originais, que podem servir como modelo, estão disponívels em todo workdir de projeto, em .git/hooks
. Para ativar uma configuração customizada por projeto, faz-se necessários algumas personalizações.
Os scripts para githooks devem estar presentes no ambiente de workdir, para surtir o efeito esperado. E para garantir que estejam em todos os ambientes do projeto, deve-se redefinir o hooksPath.
mkdir .git-hooks;
git config core.hooksPath .git-hooks;
cd .git-hooks;
touch README.txt;
git add . ;
git ci -m "Directory Custom githooks for the project";
Acrescentar git hooks
AtençãoA partir dos scripts de exemplo
A permissão de execução dosgit hooks
devem ser concedidas antes de seu respectivo commit, para preservação do filemode no repositório remoto.
cp -v .git/hooks/commit-msg.sample .git-hooks/commit-msg;A partir de outra origem
chmod +x .git-hooks/*;
git ci -m "githook commit-msg adding.";
curl https://raw.githubusercontent.com/incolumepy-prospections/incolumepy.gwa/main/.git-hooks/commit-msg -o .git-hooks/commit-msg;githook para mensagem de commit personalizada
chmod +x .git-hooks/*;
git ci -m "githook commit-msg adding.";
curl https://raw.githubusercontent.com/incolumepy-prospections/incolumepy.gwa/main/.git-hooks/commit-msg -o .git-hooks/commit-msggithook para validação do branchname
chmod +x .git-hooks/*;
git ci -m "githook commit-msg adding.";
Com este hook, pode-se forçar que os nomes de branches possuam uma padronização. Impedido que sejam criados branchnames com nomes inadequados, ou que dificultem filtragem de registros.
curl https://raw.githubusercontent.com/incolumepy-prospections/incolumepy.gwa/main/.git-hooks/pre-commit -o .git-hooks/pre-commitgithook para validação de mensagem de commit
chmod +x .git-hooks/*;
git ci -m "githook commit-msg adding.";
Este githook força a utilização do Conventional Commits.
O que é a especificação do Conventional Commits? é uma convenção simples para utilizar nas mensagens de commit. Ela define um conjunto de regras para criar um histórico de commit explícito, o que facilita a criação de ferramentas automatizadas baseadas na especificação. Esta convenção se encaixa com o SemVer - Versionamento Semântico, descrevendo os recursos, correções e modificações que quebram a compatibilidade nas mensagens de commit.
A especificação completa pode ser acessada inglês ou em português brasileiro.
curl https://raw.githubusercontent.com/incolumepy-prospections/incolumepy.gwa/main/.git-hooks/prepare-commit-msg -o .git-hooks/prepare-commit-msg
chmod +x .git-hooks/*;
git ci -m "githook commit-msg adding.";
Troubleshooting
Conflito em atualização
Manter versão remotagit pull -X theirsManter versão local
git pull -X oursErro no processo de clonagem
Solução aumentar o buffer http
>>> fatal: the remote end hung up unexpectedlygit config --global http.postBuffer 524288000 # 500M
git config http.postBuffer 524288000 #500M
git config --global http.postBuffer 2048M #tamaho do buffer
git config --global http.maxRequestBuffer 1024M # tamanho máximo de requisição do buffer
git config --global core.compression 9 # compressão máxima para transmissão
git config --global pack.windowMemory 256m # Tamanho da janela de frame
git config --global pack.packSizeLimit 256m # Tamanho limite do frame
Recuperar commits/branches removidos acidentalmente
Para efeito de elucidação e esclarecimento, será utilizado a arvore abaixo:* ade0441 (HEAD -> bugfix#7) update file 2021-12-01 11:05:47 | * 0af46cb (bugfix#8) update file 2021-12-01 11:03:49 | * 3b142e0 update file 2021-12-01 10:23:50 | * 103e1ba update file |/ * 8f1b741 (1638270076) teste em andamento | * 5c9d60e (origin/enhancement#4, enhancement#4) Acrescimo do ambiente Python3.10 em teste automatos | * 57fbae1 Tratativa em manter ambientes com versões fixadas pelo poetry.lock | * 162de0d Tratativa em emover ambientes poetry |/ | * 00d8120 (origin/enhancement#5, enhancement#5) Test file to metrics | * a86438d Metrics applied |/ * 73c56cf (origin/dev, dev) Bumping version from 0.2.3 to 0.2.4-alpha.0 * 09a3cc0 Merge branch 'enhancement#6' into devObserve que o bugfix#7 e bugfix#8 existem somente no Workdir.
Recuperar commits removidos acidentalmente
$ git st No ramo bugfix#7 nothing to commit, working tree clean $ git reset --hard HEAD~ HEAD is now at 8f1b741 teste em andamento $ git lg * 0af46cb (bugfix#8) update file 2021-12-01 11:03:49 * 3b142e0 update file 2021-12-01 10:23:50 * 103e1ba update file * 8f1b741 (HEAD -> bugfix#7, 1638270076) teste em andamento | * 5c9d60e (origin/enhancement#4, enhancement#4) Acrescimo do ambiente Python3.10 em teste automatos | * 57fbae1 Tratativa em manter ambientes com versões fixadas pelo poetry.lock | * 162de0d Tratativa em emover ambientes poetry |/ | * 00d8120 (origin/enhancement#5, enhancement#5) Test file to metrics | * a86438d Metrics applied |/ * 73c56cf (origin/dev, dev) Bumping version from 0.2.3 to 0.2.4-alpha.0 * 09a3cc0 Merge branch 'enhancement#6' into devSuponha que durante o desenvolvimento, foi percebido que havia um erro, e em vez de executar "git checkout" foi executado "git reset". E o commit com todo o trabalho no branch bugfix#7 desapareceu da existência!!!
-
Localizar o hash do commit removido
git reflog
8f1b741 (HEAD -> bugfix#7, 1638270076) HEAD@{0}: reset: moving to HEAD~ ade0441 HEAD@{1}: Branch: renamed refs/heads/recover2 to refs/heads/bugfix#7 ade0441 HEAD@{3}: checkout: moving from ade0441fa047b661aa52a10deb0b59586ab37e3b to recover2 ade0441 HEAD@{4}: checkout: moving from 1638270076 to ade0441 8f1b741 (HEAD -> bugfix#7, 1638270076) HEAD@{5}: reset: moving to 8f1b741 ade0441 HEAD@{6}: commit: update file 2021-12-01 11:05:47 8f1b741 (HEAD -> bugfix#7, 1638270076) HEAD@{7}: reset: moving to 8f1b741 0af46cb (bugfix#8) HEAD@{8}: commit: update file 2021-12-01 11:03:49
- Copiar commit com hash encontrado para o branch ativo (bugfix#7)
git cherry-pick ade0441
git lg* 77916df (HEAD -> bugfix#7) update file 2021-12-01 11:05:47 | * 0af46cb (bugfix#8) update file 2021-12-01 11:03:49 | * 3b142e0 update file 2021-12-01 10:23:50 | * 103e1ba update file |/ * 8f1b741 (1638270076) teste em andamento | * 5c9d60e (origin/enhancement#4, enhancement#4) Acrescimo do ambiente Python3.10 em teste automatos | * 57fbae1 Tratativa em manter ambientes com versões fixadas pelo poetry.lock | * 162de0d Tratativa em emover ambientes poetry |/ | * 00d8120 (origin/enhancement#5, enhancement#5) Test file to metrics | * a86438d Metrics applied |/ * 73c56cf (origin/dev, dev) Bumping version from 0.2.3 to 0.2.4-alpha.0 * 09a3cc0 Merge branch 'enhancement#6' into dev
- Recuperado =D
$ git st No ramo dev Your branch is up to date with 'origin/dev'. nothing to commit, working tree clean git br -D bugfix#8 Deleted branch bugfix#8 (was 0af46cb). $ git lg * 85f238c (bugfix#7) update file 2021-12-01 11:05:47 * 8f1b741 (1638270076) teste em andamento | * 5c9d60e (origin/enhancement#4, enhancement#4) Acrescimo do ambiente Python3.10 em teste automatos | * 57fbae1 Tratativa em manter ambientes com versões fixadas pelo poetry.lock | * 162de0d Tratativa em emover ambientes poetry |/ | * 00d8120 (origin/enhancement#5, enhancement#5) Test file to metrics | * a86438d Metrics applied |/ * 73c56cf (HEAD -> dev, origin/dev) Bumping version from 0.2.3 to 0.2.4-alpha.0 * 09a3cc0 Merge branch 'enhancement#6' into devAo remover o branch, em vez de "bugfix#7" foi executado "bugfix#8". E o branch bugfix#8 desapareceu da existência!!!
-
Localizar o hash do commit removido
git reflog
73c56cf (HEAD -> dev, origin/dev) HEAD@{0}: checkout: moving from dev to dev 73c56cf (HEAD -> dev, origin/dev) HEAD@{1}: checkout: moving from bugfix#7 to dev 85f238c (bugfix#7) HEAD@{2}: cherry-pick: update file 2021-12-01 11:05:47 8f1b741 (1638270076) HEAD@{3}: reset: moving to 8f1b741 77916df HEAD@{4}: cherry-pick: update file 2021-12-01 11:05:47 8f1b741 (1638270076) HEAD@{5}: reset: moving to HEAD~ ade0441 HEAD@{6}: Branch: renamed refs/heads/recover2 to refs/heads/bugfix#7 ade0441 HEAD@{8}: checkout: moving from ade0441fa047b661aa52a10deb0b59586ab37e3b to recover2 ade0441 HEAD@{9}: checkout: moving from 1638270076 to ade0441 8f1b741 (1638270076) HEAD@{10}: reset: moving to 8f1b741 ade0441 HEAD@{11}: commit: update file 2021-12-01 11:05:47 8f1b741 (1638270076) HEAD@{12}: reset: moving to 8f1b741 0af46cb HEAD@{13}: commit: update file 2021-12-01 11:03:49 3b142e0 HEAD@{14}: commit: update file 2021-12-01 10:23:50 103e1ba HEAD@{15}: commit: update file 8f1b741 (1638270076) HEAD@{16}: rebase (finish): returning to refs/heads/1638270076 8f1b741 (1638270076) HEAD@{17}: rebase (pick): teste em andamento 73c56cf (HEAD -> dev, origin/dev) HEAD@{18}: rebase (start): checkout dev
- Recriar o branch bugfix#8 com hash encontrado
git co -b bugfix#8 0af46cb
git lg* 85f238c (bugfix#7) update file 2021-12-01 11:05:47 | * 0af46cb (HEAD -> bugfix#8) update file 2021-12-01 11:03:49 | * 3b142e0 update file 2021-12-01 10:23:50 | * 103e1ba update file |/ * 8f1b741 (1638270076) teste em andamento | * 5c9d60e (origin/enhancement#4, enhancement#4) Acrescimo do ambiente Python3.10 em teste automatos | * 57fbae1 Tratativa em manter ambientes com versões fixadas pelo poetry.lock | * 162de0d Tratativa em emover ambientes poetry |/ | * 00d8120 (origin/enhancement#5, enhancement#5) Test file to metrics | * a86438d Metrics applied |/ * 73c56cf (origin/dev, dev) Bumping version from 0.2.3 to 0.2.4-alpha.0 * 09a3cc0 Merge branch 'enhancement#6' into dev
- Recuperado =D
Atualizações
- 01/03/2013 09:20
- 04/11/2013 09:15
- 22/05/2018 11:47
- 20/11/2018 11:33
- 01/01/2019 09:25
- 23/03/2019 07:56
- 28/03/2019 09:35
- 31/03/2019 21:19
- 18/04/2019 16:28
- 03/06/2019 15:11
- 22/11/2019 15:34
- 20/12/2019 11:07
- 03/02/2020 23:00
- 23/02/2020 08:52
- 30/03/2020 08:25
- 14/04/2020 11:41
- 27/04/2020 09:53
- 03/08/2020 10:30
- 12/08/2020 00:21
- 18/08/2020 16:04
- 30/11/2020 13:23
- 01/12/2020 06:31
- 01/12/2020 21:45
- 11/12/2020 14:58
- 02/02/2021 10:41
- 15/05/2021 09:29
- 22/07/2021 08:53
- 19/10/2021 09:52
- 29/11/2021 22:06
- 30/11/2021 08:42
- 02/12/2021 07:29
- 02/01/2022 09:50
- 06/01/2022 08:09
- 07/01/2022 09:49
- 25/01/2022 08:34
- 26/01/2022 08:05
- 10/03/2022 15:51
- 22/04/2022 11:13
- 26/04/2022 14:13
- 20/03/2023 15:07
- 24/10/2023 11:28
- 23/11/2023 06:48
- 24/12/2023 09:14
Referências
- https://stackoverflow.com/a/5017265/5132101
Comentários