Git
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-replace last updated in 2.30.1

NOME

git-replace - Crie, liste, exclua as refs para substituir os objetos

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 reposição devem ser do mesmo tipo. Esta restrição pode ser contornada utilizando a opção -f.

A menos que -f seja utilizado, a referência replace ainda não deve existir.

Não há outra restrição nos objetos substituídos e os objetos de reposição. Os commits mesclados 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 em um arquivo temporário, um editor é iniciado no arquivo e o resultado é analisado para criar um novo objeto do mesmo tipo que <objeto>. Um ref 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>

A lista substitui as refs para os objetos que coincidam ao padrão informado (ou todos caso nenhum seja informado). Digitar "git replace" sem argumentos, também lista todos as refs de reposição.

--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

O seguinte formato está disponível:

  • short: <replaced sha1>

  • medium: <replaced sha1> → <replacement sha1>

  • long: <sha1 substituído> (<tipo substituído>) → <sha1 substituído> (<tipo substituído>)

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]