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.1 no changes
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0 11/20/23
- 2.35.1 → 2.42.3 no changes
- 2.35.0 01/24/22
- 2.7.6 → 2.34.8 no changes
- 2.6.7 05/05/17
- 2.1.4 → 2.5.6 no changes
- 2.0.5 12/17/14
RESUMO
git merge-file [-L <nome-atual> [-L <nome-base> [-L <outro-nome>]]] [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>] [--[no-]diff3] [--object-id] <atual> <base> <outro>
DESCRIÇÃO
Dados três arquivos <atual>
, <base>
e <outro>
, o git merge-file incorpora todas as alterações que levam de <base>
para <outro>
em <atual>
. O resultado normalmente vai para <atual>
. O git merge-file é útil para combinar alterações separadas num original. Suponha que <base>
seja o original e que tanto <atual>
quanto <outro>
sejam modificações de <base>
, então o git merge-file combina ambas as alterações.
Um conflito ocorre se tanto <atual>
quanto <outro>
tiverem alterações num segmento comum de linhas. Se for encontrado um conflito, o comando git merge-file normalmente emite um aviso e coloca o conflito entre colchetes com linhas que contêm marcadores <<<<<<<
e >>>>>>>
. Um conflito típico terá a seguinte aparência:
<<<<<<< A linhas no arquivo A ======= linhas no arquivo B >>>>>>> B
Se houver conflitos, o usuário deve editar o resultado e excluir uma das alternativas. Entretanto, quando as opções --ours
, --theirs
ou --union
estiverem em vigor, estes conflitos são resolvidos favorecendo as linhas de <atual>
, as linhas <outro>
ou as linhas de ambos, respectivamente. O comprimento dos marcadores de conflito pode ser fornecido com a opção --marker-size
.
Caso a opção --object-id
for usada, ocorrerá exatamente o mesmo comportamento, a menos que, em vez de especificar o que deve ser mesclado como arquivos, ele será especificado como uma lista de IDs dos objetos referentes a bolha.
O valor na saída deste programa é negativo caso ocorra um erro, se não o número de conflito (truncado para 127 caso haja mais que muitos conflitos). Caso a mesclagem esteja limpa, o valor na saída será 0.
O comando git merge-file foi projetado para ser um clone reduzido do RCS merge; isto é, implementa toda a funcionalidade de mesclagem do RCS, necessária ao git[1].
OPÇÕES
- --object-id
-
Especifique o conteúdo a ser mesclado como bolhas no repositório atual em vez dos arquivos. Nesse caso, a operação deve ocorrer num repositório válido.
Se a opção
-p
for usada, o arquivo mesclado (incluindo os conflitos, se houver) vai para a saída normalmente predefinida; caso contrário, o arquivo mesclado é gravado no armazenamento de objetos e o ID do objeto de sua bolha é gravado na saída predefinida. - -L <rótulo>
-
Essa opção pode ser utilizada até três vezes e define os rótulos para serem utilizados em vez dos nomes dos arquivos correspondentes nos relatórios de conflito. Ou seja,
git merge-file -L x -L y -L z a b c
gera uma saída onde parece que veio dos arquivos x, y e z em vez dos arquivos a, b e c. - -p
-
Envie os resultados para a saída padrão em vez de sobrescrever
<atual>
. - -q
-
Quieto; não avise sobre conflitos.
- --diff3
-
Exibe conflitos no estilo "diff3".
- --zdiff3
-
Exibe conflitos no estilo "zdiff3".
- --ours
- --theirs
- --union
-
Em vez de deixar conflitos no arquivo, resolva conflitos favorecendo o nosso lado (ou o deles, ou ambos) das linhas.
- --diff-algorithm={patience|minimal|histogram|myers}
-
Use um algoritmo de comparação diferente durante a mesclagem. A predefinição atual é "myers", mas a seleção de um algoritmo mais recente, como o "histograma", pode ajudar a evitar erros de mesclagem que ocorrem devido a linhas correspondentes sem importância (como chaves de funções distintas). Consulte também git-diff[1]
--diff-algorithm
.
EXEMPLOS
-
git merge-file README.my README README.upstream
-
combina as alterações de README.my e README.upstream desde o README, tenta mesclá-las e grava o resultado no README.my.
-
git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345
-
mescla tmp/a123 e tmp/c345 com a base tmp/b234, mas utiliza os rótulos
a
ec
em vez dotmp/a123
etmp/c345
. -
git merge-file -p --object-id abc1234 def567 890abcd
-
Combina as alterações da bolha abc1234 e 890abcd desde def567, tenta mesclá-las e grava o resultado na saída predefinida
GIT
Parte do conjunto git[1]