Pergunta

Eu quero mesclar dois ramos que foram separados por um tempo e queria saber quais arquivos foram modificados.

Veio este link: http://linux.yyz.us/git-howto.html que foi bastante útil.

As ferramentas para comparar ramos eu vim transversalmente são:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

queria saber se há algo como "git status de master..branch" para ver apenas os arquivos que são diferentes entre os dois ramos.

Sem criar uma nova ferramenta, eu acho que este é o mais próximo que você pode começar a fazer isso agora (o que naturalmente irá mostrar repete se um arquivo foi modificado mais de uma vez):

  • git diff master..branch | grep "^diff"

queria saber se há algo que eu perdi ...

Foi útil?

Solução

Para comparar o ramo atual contra ramo master:

$ git diff --name-status master

Para comparar dois ramos:

$ git diff --name-status firstbranch..yourBranchName

Leia-se sobre git diff no documentação oficial.

Outras dicas

Tente

$ git diff --stat --color master..branchName

Isto lhe dará mais informações sobre cada mudança, enquanto ainda estiver usando o mesmo número de linhas.

Você também pode inverter os ramos para obter uma imagem mais clara da diferença se você fosse para fundir a outra maneira:

$ git diff --stat --color branchName..master

Além disso, mantenha em mente que git tem ramificação barato e fácil. Se eu acho que uma fusão poderia ser problemático criar uma filial para a mesclagem. Então, se master tem as mudanças que deseja mesclar e ba é meu ramo que precisa o código do mestre que eu poderia fazer o seguinte:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master
resultado

End é que eu comecei a experimentar a fusão em um ramo de usar e deitar fora antes de aparafusar com meu ramo. Se eu começar a minha auto enroscado posso simplesmente apagar o ramo ba-merge e começar de novo.

Se alguém está tentando gerar um arquivo diff a partir de dois ramos:

git diff master..otherbranch > myDiffFile.diff

Há também um método baseado GUI.

Você pode usar gitk .

  1. Executar:

    $ gitk --all
    
  2. Botão direito do mouse em um commit de um ramo e selecione Marcar cometer no menu pop-up.

  3. Botão direito do mouse em um commit de outro ramo e selecione Diff this -> marcados cometer ou Diff marcada comprometer -> este .

Em seguida, haverá uma lista de arquivos alterados no painel inferior direito e diff detalhes no painel inferior esquerdo.

Mais uma opção, usando fusão neste caso:

git difftool -d master otherbranch

Isto permite não só ver as diferenças entre os arquivos, mas também fornece uma maneira fácil de apontar e clicar em um arquivo específico.

Note que git torna fácil simplesmente experimentar a junção e volta longe de qualquer problema se você não gostar do resultado. Pode ser mais fácil do que olhar para os potenciais problemas com antecedência.

E se você está procurando mudanças só entre certos de arquivo (s), então:

git diff branch1 branch2 -- myfile1.js myfile2.js

Branch1 é opcional e seu ramo atual (o ramo que estão em) será considerado por padrão se Branch1 não é fornecido. por exemplo:

git diff master -- controller/index.js

Ao trabalhar de forma colaborativa, ou em vários recursos de uma só vez, é comum que o montante ou até mesmo o seu mestre contém trabalho que não está incluído no seu ramo, e será incorretamente aparecer em diffs básicas.

Se o seu Upstream pode ter movido, você deve fazer isso:

git fetch
git diff origin/master...

Apenas usando mestre git diff pode incluir ou deixar de incluir, alterações relevantes.

Se você estiver usando IntelliJ IDEA , você também pode comparar qualquer ramo com seu atual ramo de trabalho. Consulte http://www.jetbrains.com/ ideia / webhelp / fusão-excluir-e comparando-branches.html # d288093e3827 para mais informações. Este está disponível no edição gratuita também.

Existem dois ramos permite dizer

  • A (ramo em que você está trabalhando)
  • B (Outro ramo com o qual pretende comparar)

Ser no ramo A, você pode digitar

git diff --color B

então isso vai lhe dar uma saída de

 enter descrição da imagem aqui

O ponto importante sobre isso é

  1. O texto em verde está dentro presente no ramo A

  2. O texto no vermelho está presente no ramo B

Existem muitas respostas aqui, mas eu queria acrescentar algo que eu normalmente usam. Se você estiver em um dos ramos que você gostaria de comparar Eu normalmente fazer uma das seguintes opções. Por causa desta resposta, vamos dizer que estamos em nosso ramo secundário. Dependendo do que ver o que você precisa no momento vai depender de qual você escolher, mas a maioria do tempo eu estou usando a segunda opção dos dois. A primeira opção pode ser útil se você está tentando reverter para uma cópia original - de qualquer forma, tanto fazer o trabalho

Isto irá comparar mestre para o ramo que estamos em (que é secundário) e o código original serão as linhas adicionadas e o novo código serão consideradas as linhas removidas

git diff ..master

ou

Isso também irá comparar mestre para o ramo em que estamos (o que é secundário) e o código original serão as antigas linhas eo novo código será as novas linhas

git diff master..

Se você gosta de GUI e estiver usando o Windows, aqui é uma maneira fácil.

  1. Baixar WinMerge
  2. Confira os dois ramos em diferentes pastas
  3. Faça uma pasta por pasta comparar usando WinMerge. Você também pode facilmente fazer modificações, se um dos ramos é o que você está trabalhando.
git diff revision_n revision_m

Se revision_n e revision_m são commits sucessivas, em seguida, ele gera mesmo que git show revision_m

Para as pessoas que estão à procura de uma solução GUI, Git Cola tem uma filial muito bom" Visualizador de comparação ( diff -> Ramos .. ).

Você também pode usar um visuais diff .

Por exemplo, se você estiver usando Sourcetree , você pode simplesmente select quaisquer dois commits em vista log .

(Eu pessoalmente prefiro usar uma GUI na maioria dos casos para isso, e eu estou postando isso para aqueles que podem não estar familiarizados com as opções GUI).

Você também pode facilmente comparar ramos de arquivos alterados, utilizando, por exemplo, TortoiseGit . Basta clicar em Procurar referências e escolher os ramos que você deseja comparar.

Por exemplo, se você compara seu ramo , com mestre , você vai ficar como uma lista de resultados de arquivos que serão alterados no mestre se você decidir fundir seu ramo em mestre .

Remmber que você vai ter resultado diferente se você comparar mestre com seu ramo e seu ramo com mestre .

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