Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.44.1 → 2.47.0 no changes
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0 11/20/23
- 2.24.1 → 2.42.3 no changes
- 2.24.0 11/04/19
- 2.18.1 → 2.23.4 no changes
- 2.18.0 06/21/18
- 2.10.5 → 2.17.6 no changes
- 2.9.5 07/30/17
- 2.2.3 → 2.8.6 no changes
- 2.1.4 12/17/14
- 2.0.5 12/17/14
RESUMO
git replace [-f] <objeto> <rearranjo> git replace [-f] --edit <objeto> git replace [-f] --graft <commit> [<origem >…] git replace [-f] --convert-graft-file git replace -d <objeto>… git replace [--format=<formato>] [-l [<padrão>]]
DESCRIÇÃO
Adiciona uma referência replace (substituir) no espaço de nomes refs/replace/
.
O nome da referência replace é o SHA-1 do objeto que é substituído. O conteúdo da referência replace é o SHA-1 do objeto de reposição.
O objeto substituído e o objeto de substituição devem ser do mesmo tipo. Esta restrição pode ser contornada usando -f
.
A menos que -f
seja utilizado, a referência replace ainda não deve existir.
Não há nenhuma outra restrição sobre os objetos substituídos e de substituição. A mesclagem dos commits podem ser substituídos por commits sem mesclagem e vice-versa.
É predefinido que as referências de reposição seja utilizadas por todos os comandos do Git, exceto aqueles que executem o percurso de acessibilidade (remoção "prune", transferência de pacotes "pack transfer" e "fsck").
É possível desativar o uso do rearranjo das referências para qualquer comando utilizando a opção --no-replace-objects
logo após o git.
Como por exemplo, caso o commit foo foi substituído pelo commit bar:
$ git --no-replace-objects cat-file commit foo
exibe as informações sobre o commit foo, enquanto:
$ git cat-file commit foo
exibe as informações sobre o commit bar.
A variável de ambiente GIT_NO_REPLACE_OBJECTS
pode ser configurada para obter o mesmo efeito que a opção --no-replace-objects
.
OPÇÕES
- -f
- --force
-
Caso exista uma "ref" de reposição existente para o mesmo objeto, ela será substituída (em vez de falhar).
- -d
- --delete
-
Exclua as refs de reposição existentes para os objetos informados.
- --edit <objeto>
-
Edita o conteúdo de um objeto interativamente. O conteúdo existente para
<objeto>
é impresso num arquivo temporário, um editor é iniciado no arquivo e o resultado é analisado para criar um novo objeto do mesmo tipo que<objeto>
. Umref
de reposição é criado para substituir<objeto>
com um objeto recém-criado. Para mais detalhes de como o editor será selecionado, consulte git-var[1]. - --raw
-
Ao editar, forneça o conteúdo do objeto bruto, em vez do impresso bonito. Atualmente afeta apenas as árvores que serão exibidas na sua forma binária. É mais difícil trabalhar com isso, porém pode ajudar durante o reparo de uma árvore que está tão corrompida que não pode ser bem impressa. Observe que pode ser necessário configurar o seu editor para ler e gravar os dados binários de forma limpa.
- --graft <commit> [<origem>…]
-
Cria um commit com enxerto. Um novo commit é criado com o mesmo conteúdo de
<commit>
exceto que as suas origens serão [<origem>…] em vez do <commit> das origens. Uma ref de reposição é então criada para substituir o<commit>
pelo commit recém-criado. Utilize--convert-graft-file
para converter um arquivo$GIT_DIR/info/grafts
e utilize as refs de reposição em seu lugar. - --convert-graft-file
-
Cria commits com enxertos para todas as entradas em
$GIT_DIR/info/grafts
e exclui este arquivo quando for bem sucedido. O objetivo é ajudar os usuários a fazer a transição do arquivo de enxerto agora, obsoleto. - -l <padrão>
- --list <padrão>
-
Lista as refs de substituição dos objetos que correspondem a predefinição informada (ou a todos, caso nenhuma predefinição seja usada). Ao usar o comando
git replace
sem argumentos também lista todas substituições das referências. - --format=<formato>
-
Ao listar, utilize o <formato> informado, que pode ser short (curto), medium (médio) e long (longo). Quando omitido, a predefinição retorna para o formato short.
FORMATOS
Os seguintes formatos estão disponíveis:
-
short: <sha1-substituido>
-
medium: <sha1-substituído> → <sha1-de-substituição>
-
long: <sha1-substituído> (<tipo-substituído>) → <substituição-do-sha1> (<substituição-do-tipo>)
CRIANDO OBJETOS DE SUBSTITUIÇÃO
O git-hash-object[1], git-rebase[1], e git-filter-repo, dentre outros comandos git podem ser utilizados para criar a reposição dos objetos a partir dos objetos já existentes. A opção --edit
também pode ser usada com git replace para criar a reposição de um objeto editando um objeto já existente.
Caso queira substituir várias bolhas, árvores ou commits que fazem parte de uma cadência de commits, você pode apenas criar uma cadência de reposição dos commits e então substituir apenas o commit no topo da cadeia alvo dos commits pelos commits do topo da cadência de substituições dos commits.
BUGS
Comparando as bolhas ou as árvores que foram substituídos por aqueles que os substituem, não funcionará de forma correta. E utilizar o comando git reset --hard
para voltar para um commit que foi reposto, moverá o ramo para o commit que foi substituído em vez do commit que foi resposto.
Pode haver outros problemas durante a utilização do comando git rev-list relacionadas com objetos pendentes.
GIT
Parte do conjunto git[1]