Pergunta

Eu sei que posso ver a diferença entre a cabeça e o estado atual com meld .. Mas como posso ver as diferenças entre ramos, por exemplo master e devel com MELD?

No momento, faço as seguintes etapas:

  1. Renomear a pasta de cópia de trabalho
    Por exemplo mv /projectA /projectA_master)
  2. Clonar o projeto novamente
    git clone url
  3. Troque para devel ramo
    cd projectA && git -b devel origin/devel
  4. Ver diferenças com MELD
    meld /projectA_Master projectA

Não há uma maneira mais fácil de obter o mesmo resultado em MELD? Eu só preciso para revisar as alterações e não principalmente para a fusão.

Foi útil?

Solução

Também achei esse problema irritante, por isso fiz o Git Meld, o que permite uma maneira mais confortável de difíceis cometers arbitrários contra a árvore de trabalho ou a área de encenação. Você pode encontrar isso em https://github.com/wmanley/git-meld . É um pouco como o script de Mark, mas funciona para comparar qualquer commit arbitrário ou a área de estadiamento ou o diretório de trabalho contra qualquer um dos outros. Se uma das coisas contra as quais você está comparando é a árvore de trabalho, isso também é lançado, para que você não perca suas alterações.

Outras dicas

Curto e doce:

git config --global diff.tool meld

Isso configura o git para usar meld como a ferramenta diff. (Você não precisa especificar os argumentos da linha de comando, suporte para meld está incorporado ao git.)

Então, se você deseja um diferencial gráfico em vez de textual, basta invocar git difftool ao invés de git diff (Ambos aceitam os mesmos argumentos). No seu caso:

git difftool master..devel

ATUALIZAÇÃO: Se você não deseja o diferencial de um arquivo no momento, mas deseja usar a visão de "subdiretório" de Meld com todas as mudanças entre os dois ramos, observe o -d ou --dir-diff opção para git difftool. Por exemplo, quando estou na filial XYZ e quero ver o que é diferente entre este e o ramo ABC, eu corro isto:

git difftool -d ABC

Começando com o git v1.7.11, você pode usar git difftool --dir-diff Para executar um DIFFICE DIFRICO. Que funciona muito bem com Meld wihout https://github.com/wmanley/git-meld scripts.

Configure o git

git config --global diff.tool meld

Use-o

git difftool -d topic             // -d is --dir-diff
git difftool -d master..topic

Para macOS

brew cask install meld
git config --global difftool.meld.cmd 'open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"'
git config --global difftool.meld.trustExitCode true

É importante dizer que usar git difftool -d vocês ainda pode editar Seus arquivos de trabalho em MELD e Salve-os. Para conseguir isso, você precisa comparar alguma ramificação com sua árvore de trabalho atual, por exemplo:

git difftool -d branchname

Meld mostrará que os diretórios esquerdo e direito estão localizados em /TMP. No entanto, os arquivos no diretório correto são na verdade links simbólicos para seus arquivos no diretório de trabalho atual (não se aplica ao Windows). Assim, você pode editá -los diretamente em MELD e, quando você os salvar, suas alterações serão salvas em seu diretor que trabalha.

No entanto, uma opção mais interessante é a comparação do diretor de trabalho atual com o Stash. Você pode fazer isso simplesmente digitando:

git difftool -d stash

Em seguida, você pode transferir algumas alterações do Stash (janela esquerda) para a sua cópia de trabalho atual (janela direita), sem usar git stash pop/apply e evitando resolução incômoda de conflitos que podem ser induzidos por esses comandos.

Eu acho que isso pode aumentar significativamente o fluxo de trabalho com stashes. Você pode transferir gradualmente alterações de Stash para Copiar e comprometer -as um por um, introduzindo outras alterações, se desejar.

Embora pareça pelas outras respostas como se não houvesse uma maneira de fazer isso diretamente no repositório Git no momento, é fácil (graças à resposta para outra pergunta :)) Para escrever um script que extrairá as árvores de dois compromissos com diretórios temporários e fugirá neles, removendo os dois diretórios quando o MELD sair:

http://gist.github.com/498628

Obviamente, você perderá as mudanças feitas via MELD, mas é muito bom para uma rápida visão geral das diferenças, eu acho.

Eu acho que uma maneira fácil de fazer isso é usar git reset --soft:

Objetivo: Compare as diferenças entre Branch_A e Branch_B com MELD

git checkout branch_a
git checkout -b do_diff
git reset --soft branch_b
meld .

No Git v1.7.9, você pode comparar duas confirmações sem a linha de comando:

Você deve configurar as opções de edição 'Git GUI', Global: "Use Merge Tool: Meld".

Começar Gitk, selecione um compromisso, clique com o botão direito do mouse em outro compromisso> "diff this -> selecionado". Em 'patch', clique com o botão direito do mouse em um arquivo>"diferença externa".

MELD Iniciará e exibirá o primeiro comprometimento ainda selecionado no lado direito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top