git diff ne se montre pas assez

je veux voir la différence entre la branche master et ma branche. J'ai beaucoup de tire par le maître de ma branche et pour voir les changements qui pourraient être ajoutés si j'ai fusionné mon long dans le maître.

C'est ma situation:

-*--*--*-----*<master>
            
   1--*--*--*--2--*<feature>

mon problème est le git diff master feature semble n'afficher que le numéro 2. Je veux voir la différence qu'une demande GitHub pull montrerait, qui je crois est tout le chemin pour commettre 1. J'ai remarqué que git cherry me montre les propagations pour lesquelles je veux voir la différence.

Merci pour tout conseil.

22
demandé sur Matthieu 0000-00-00 00:00:00

3 réponses

la chose importante à réaliser au sujet de git diff A B est qu'il ne vous montre jamais la différence entre les états de l'arbre entre exactement deux points dans le graphe de commit - il ne se soucie pas de l'histoire. Les notations .. et ... utilisées pour git diff ont la signification suivante:

An illustration of the different ways of specifying commits for git diff

donc quand vous lancez git diff master feature ce n'est pas seulement vous montrer le changement introduit par le commit que vous avez marquées comme 2 - la sortie doit afficher les différences exactes entre l'état de l'arbre engagé dans master , et l'état de l'arbre engagé dans feature . Si cela ne vous montre pas les changements antérieurs sur votre branche de fonctionnalité, peut-être avez-vous résolu les conflits à partir des fusions antérieures de master en faveur de la version dans master ?

Comme cebewee dit il se peut que ce que vous voulez, c'est git log -p master..feature , depuis git log ne se soucient de l'histoire. La signification de .. et ... pour git log est différente car ils sélectionnent une gamme de commits:

An illustration of the different ways of specifying ranges of commits for git log

soit dit en passant, il est souvent dit que fusionner de master dans une branche de sujet est la mauvaise chose à faire - à la place, vous devriez rebaser, ou fusionner votre branche de sujet dans master après qu'il est terminé. Ce garde le sens du sujet branche facilement compris. Le responsable de git a fait un (assez difficile à comprendre) blog sur la philosophie de la fusion qui discute de cela.

116
répondu Mark Longair 2017-05-23 12:02:53

git diff master feature ne montre aucune des commits' mais la différence textuelle entre le Master commits et la fonctionnalité. Il semble que vous voulez voir tous les commits de feature, qui ne sont pas encore en master? Dans ce cas , essayez git log master..feature ou git log -p master..feature , si vous voulez voir les diffs, aussi.

voir la section spécifiant les fourchettes dans man git-rev-parse pour une explication du" A..b' la syntaxe.

6
répondu Lars Noschinski 2011-03-10 06:41:11

je suis relativement nouveau à git, mais si je comprends bien votre question. Votre question est enracinée dans et non dans . Une fois que je l'ai compris, tout est devenu 2 fois plus facile.

vous pensez vous êtes à cette situation ci-dessous où vous avez seulement 2 branches:

  • featureBranch
  • masterBranch

pourtant si vous faites un git branch -a vous pourrez voir tout de vos branches, local et distant .

donc votre réel situation est:

  • featureBranch
  • masterBranch
  • remoteBranch (s)
  *---* <remote's Master> which is behind your local
      \
      -*--*--*-----*<master> which is ahead of your remote/origin
       \     \     \
        1--*--*--*--2--*<feature>

pour que vous puissiez voir la différence semblable à ce que vous voyez dans Github Pull Request vous devez diff il avec votre à distance branche.

git diff <local branch> <remote>/<remote branch>

voir comparer la branche git locale avec la branche éloignée?

1
répondu Honey 2017-05-23 11:47:19