Eu sei que posso ver a diferença entre HEAD e estado atual com meld .
. Mas como posso ver as diferenças entre os ramos, por exemplo, master
e devel
com o meld?
No momento, faço as seguintes etapas:
- Renomear pasta da cópia de trabalho
Por exemplomv /projectA /projectA_master
) - Clonar o projeto novamente
git clone url
- Mudar para
devel
ramificação
cd projectA && git -b devel origin/devel
- Ver diferenças com meld
meld /projectA_Master projectA
Não existe uma maneira mais fácil de obter o mesmo resultado na fusão? Eu só preciso revisar as alterações e não principalmente para mesclar.
Respostas:
Também achei esse problema irritante, por isso fiz o git meld, que permite uma maneira mais confortável de diferenciar confirmações arbitrárias contra a árvore de trabalho ou a área de preparação. Você pode encontrá-lo em https://github.com/wmanley/git-meld . É um pouco como o script de Mark, mas funciona para comparar qualquer confirmação arbitrária ou a área de preparação ou o diretório de trabalho com qualquer um dos outros. Se uma das coisas com as quais você está comparando é a árvore de trabalho, também é a leitura-gravação, para que você não perca as alterações.
fonte
Curto e doce:
Isso configura o Git para ser usado
meld
como a ferramenta diff. (Você não precisa especificar os argumentos da linha de comando, o suporte ameld
está embutido no Git.)Então, se você quiser um diff gráfico em vez de um textual, simplesmente invoque em
git difftool
vez degit diff
(ambos usam os mesmos argumentos). No seu caso:Atualização: se você não deseja o diff de um arquivo por vez, mas deseja usar a exibição "subdiretório" do meld com todas as alterações entre os dois ramos, observe a opção
-d
ou . Por exemplo, quando estou no ramo XYZ e quero ver o que é diferente entre este e o ramo ABC, eu executo o seguinte:--dir-diff
git difftool
fonte
A partir do git v1.7.11, você pode usar
git difftool --dir-diff
para executar uma comparação de diretório. O que funciona muito bem com o meld sem scripts https://github.com/wmanley/git-meld .Configurar git
Use-o
Para macOS
fonte
Ctrl+s
- a parte correta, seu arquivo será modificado.É importante dizer que o uso
git difftool -d
que você ainda pode editar seus arquivos de trabalho em Meld e salvá-los . Para conseguir isso, você precisa comparar alguma ramificação com sua árvore de trabalho atual, por exemplo:O Meld mostrará que os diretórios esquerdo e direito estão localizados em / tmp. No entanto, os arquivos no diretório certo 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 no Meld e quando salvá-los, suas alterações serão salvas no seu diretório de trabalho.
Uma opção ainda mais interessante é a comparação do diretório de trabalho atual com o stash. Você pode fazer isso digitando:
Em seguida, você pode transferir algumas alterações do stash (janela esquerda) para sua cópia de trabalho atual (janela direita), sem usar
git stash pop/apply
e evitar a resolução de conflitos incômoda que pode ser induzida por esses comandos.Eu acho que isso pode aumentar significativamente o fluxo de trabalho com esconderijos. Você pode transferir gradualmente as alterações do stash para a cópia de trabalho e enviá-las uma a uma, introduzindo outras alterações, se desejar.
fonte
Embora pareça das outras respostas como se não houvesse uma maneira de fazer isso diretamente no repositório git no momento, é fácil (graças à resposta a outra pergunta :)) escrever um script que extraia as árvores de dois commits para diretórios temporários e execute o meld neles, removendo os dois diretórios quando o meld sair:
http://gist.github.com/498628
Obviamente, você perderá todas as alterações feitas pelo meld, mas é muito bom ter uma rápida visão geral das diferenças, eu acho.
fonte
Eu acho que uma maneira fácil de fazer isso é usando
git reset --soft
:Objetivo: comparar as diferenças entre branch_a e branch_b com meld
fonte
No git V1.7.9, você pode comparar dois commits sem a linha de comando:
Você deve configurar nas opções de edição do 'git gui', global: "Use merge tool: meld".
Inicie o gitk , selecione um commit, clique com o botão direito do mouse em outro commit> " diff this -> selected ". Em 'patch', clique com o botão direito do mouse em um arquivo> " diff externo ".
O meld será iniciado e exibirá a confirmação ainda selecionada, primeiro no lado direito.
fonte
Para o Meld no macOS, adicione-o
~/.gitconfig
ao recomendado pelo mantenedor do aplicativo macOS, yousseb :Você pode omitir as
merge
configurações, se desejar.A resposta de @ GutenYe não funcionou para mim devido a escape automático e / ou algo assim
zsh
.fonte