Reproduzindo minha resposta a partir deste tópico, que era mais específico para definir além da comparação como ferramenta diff para o Git. Todos os detalhes que compartilhei são igualmente úteis para qualquer ferramenta diff em geral, portanto, compartilhe-a aqui:
O primeiro comando que executamos é o seguinte:
git config --global diff.tool bc3
O comando acima cria a entrada abaixo .gitconfig
encontrada no %userprofile%
diretório:
[diff]
tool = bc3
Em seguida, execute o comando abaixo (a execução deste comando é redundante nesse caso específico e é necessária apenas em alguns casos especializados. Você o conhecerá em breve ):
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
O comando acima cria a entrada abaixo no .gitconfig
arquivo:
[difftool "bc3"]
path = c:/program files/Beyond Compare 3/bcomp.exe
O importante a saber aqui é a chave bc3
. Essa é uma chave bem conhecida do git, correspondente a uma versão específica das ferramentas de comparação conhecidas disponíveis no mercado ( bc3
corresponde à terceira versão da ferramenta Beyond Compare). Se você quiser ver todas as chaves predefinidas, execute o git difftool --tool-help
comando git bash. Ele retorna abaixo da lista:
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Você pode usar qualquer uma das chaves acima ou definir uma chave personalizada. Se você deseja configurar uma nova ferramenta completamente (ou uma versão recém-lançada da ferramenta conhecida) que não mapeia nenhuma das chaves listadas acima, você pode mapeá-la para qualquer uma das chaves listadas acima ou para uma nova chave personalizada de sua preferência.
E se você tiver que configurar uma ferramenta de comparação que seja
- Absolutamente novo no mercado
OU
- Foi lançada uma nova versão de uma ferramenta bem conhecida existente, que não é mapeada para nenhuma chave predefinida no git ?
Como no meu caso, eu instalei além do compare 4. beyond compare é uma ferramenta bem conhecida do git, mas sua versão 4 não é mapeada para nenhuma das chaves existentes por padrão. Portanto, você pode seguir qualquer uma das abordagens abaixo:
Posso mapear além da ferramenta comparar 4 com a chave já existente, bc3
que corresponde à versão além da comparação 3. Eu não tinha além da versão 3 no meu computador, então não me importei. Se eu quisesse, poderia tê-lo mapeado para qualquer uma das teclas predefinidas na lista acima também, por exemplo examdiff
.
Se você mapear a versão conhecida das ferramentas para a chave já existente / conhecida apropriada, não será necessário executar o segundo comando, pois o caminho de instalação já é conhecido pelo git .
Por exemplo, se eu tivesse instalado além da versão 3 na minha caixa, a configuração abaixo no meu .gitconfig
arquivo seria suficiente para continuar:
[diff]
tool = bc3
Mas se você deseja alterar a ferramenta associada padrão, acaba mencionando o path
atributo separadamente, para que o git conheça o caminho de onde o exe da nova ferramenta deve ser iniciado. Aqui está a entrada que raposas git lançam além da comparação 4. Observe o caminho do exe:
[difftool "bc3"]
path = c:/program files/Beyond Compare 4/bcomp.exe
A abordagem mais limpa é definir completamente uma nova chave para a nova ferramenta de comparação ou uma nova versão de uma ferramenta conhecida. Como no meu caso, defini uma nova chave bc4
para que seja fácil de lembrar. Nesse caso, você precisa executar dois comandos no total, mas o seu segundo comando não definirá o caminho do executável da sua nova ferramenta. Em vez disso, você deve definir o cmd
atributo para sua nova ferramenta, como mostrado abaixo:
git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
A execução dos comandos acima cria entradas abaixo no seu .gitconfig
arquivo:
[diff]
tool = bc4
[difftool "bc4"]
cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
Eu recomendo fortemente que você siga a abordagem nº 2 para evitar qualquer confusão no futuro.