Comment comparer une twig git locale avec sa twig distante?

Comment puis-je voir le diff entre une twig locale et une twig distante?

Pour mettre à jour les twigs de suivi à distance, vous devez d’abord taper git fetch , puis:

 git diff   

Vous pouvez git branch -a pour lister toutes les twigs (locales et distantes), puis choisir le nom de la twig dans la liste (il suffit de supprimer les remotes/ du nom de la twig distante).

Exemple: git diff master origin/master (où “master” est une twig principale locale et “origin / master” une twig distante à savoir origine et maître).

 git diff  / 

Par exemple git diff master origin/master , ou git diff featureA origin/next

Bien entendu, vous devez d’abord git fetch twig de suivi à distance . et vous en avez besoin pour avoir des informations à jour sur les twigs dans le référentiel distant.

Premier type

 git branch -a 

pour obtenir la liste des twigs disponibles. Sur la sortie, vous pouvez voir quelque chose comme

 * master remotes/main/master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/mt remotes/upstream/master remotes/upstream/mt 

Ensuite, montrez le diff

 git diff --stat --color remotes/main/master..origin/master git diff remotes/main/master..origin/master 

Si vous êtes sur une twig donnée et que vous souhaitez la comparer à une twig en amont,

 git diff @{upstream} 

Grâce à cette réponse , la documentation de git pour spécifier les révisions a:

@{upstream} , par exemple master@{upstream} , @{u}
Le suffixe @{upstream} vers un nom de twig (forme @{u} ) fait référence à la twig sur laquelle la twig spécifiée par branchname est configurée (configurée avec branch..remote et branch..merge ). Un nom de branchname manquant est branchname défaut.

Je comprends beaucoup mieux la sortie de:

git diff

cela me montre ce qui va être supprimé et ce qui va être ajouté si je pousse la twig locale. Bien sûr, c’est la même chose, juste l’inverse, mais pour moi, c’est plus lisible et je suis plus à l’aise de regarder ce qui va se passer.

Le moyen facile:

 git fetch git log -p HEAD..FETCH_HEAD 

Cela va d’abord récupérer les modifications de votre télécommande par défaut (origine). Cela sera créé automatiquement lorsque vous clonerez un repo. Vous pouvez aussi être explicite: git fetch origin master .

Ensuite, git log est utilisé pour comparer votre twig actuelle avec celle que vous venez de récupérer. (L’option -p (générer le correctif) est ce qui montre les différences .)

Laissez à votre twig de travail le développement et voulez différencier la twig de développement local et la twig de développement à distance, ce cas, la syntaxe devrait être comme les git diff remotes/origin/development..development
ou

git fetch origin git diff origin/development

C’est comme ça que je le fais.

 #To update your local. git fetch --all 

Cela va chercher tout à partir de la télécommande, donc quand vous vérifiez la différence, cela comparera la différence avec la twig distante.

 #to list all twigs git branch -a 

la commande ci-dessus affichera toutes les twigs.

 #to go to the branch you want to check difference git checkout  #to check on which branch you are in, use git branch (or) git status 

Maintenant, vous pouvez vérifier la différence comme suit.

 git diff origin/ 

ceci comparera votre twig locale avec la twig distante

Voici une réponse abrégée si vous comparez votre twig actuelle et quelque chose que vous voulez git pull .

 git fetch git diff FETCH_HEAD 

La première commande déterminera quelle twig distante correspond à votre twig actuelle. Un artefact de ce calcul dans la référence FETCH_HEAD . Ensuite, la deuxième commande utilise cette référence par rapport à celle de votre twig actuelle.

Je sais qu’il y a déjà plusieurs réponses à cette question, mais je faisais une étrange erreur en essayant la plupart d’entre elles.

Dans mon cas, j’ai une deuxième télécommande appelée heroku qui n’est pas à l’ origin et parce qu’elle n’était pas synchronisée, j’ai eu cette erreur en essayant de lancer le git diff master heroku/master :

fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.

ou cela en essayant l’autre approche git diff master..heroku/master :

fatal: bad revision 'master..heroku/master'

La solution mentionnait explicitement le nom distant sur git fetch avant de git diff , dans mon cas:

 $ git fetch heroku $ git diff master heroku/master 

Espérons que cela aide les autres avec ce même problème.

tl; dr : git diff

Lorsque j’utilise git sur le shell, j’aime d’abord m’orienter en regardant autour de moi. Voici une commande pour afficher toutes les twigs

 $ git branch -a # (or git branch --all) * my-branch master remotes/origin/some-branch remotes/origin/HEAD -> origin/master remotes/origin/my-branch remotes/origin/some-other-branch remotes/origin/master 

Ici, j’ai deux twigs locales ( my-branch et master ) et 4 twigs distantes ( some-branch , some-other-branch , master et my-branch ).

En outre, l’astérisque à côté de my-branch indique le fait que je suis actuellement dans cette twig (vous le saurez également en utilisant la commande git status qui produirait: On branch my-branch. ).

Remarque: les twigs distantes du shell git bash sont affichées en rouge, tandis que les twigs locales sont affichées en vert.

Si vous voulez juste montrer des twigs distantes :

 $ git branch -r # (or git branch --remotes) origin/some-branch origin/HEAD -> origin/master origin/my-branch origin/some-other-branch origin/master 

Pour afficher uniquement les twigs locales, vous pouvez être tenté d’utiliser git branch -l mais c’est une commande complètement différente. Pour afficher les twigs locales, utilisez git branch sans option

 $ git branch * my-branch master 

Pour terminer l’examen des options de twig de base, il existe la --list contrairement à ce que vous pourriez attendre – pour permettre le filtrage . Utilisez-le avec un motif comme celui-ci:

 $ git branch --list 'my*' * my-branch 

Vous pouvez également combiner --list avec les options -a et -r mais assurez-vous d’adapter votre modèle en conséquence ( rappelez-vous que les twigs distantes commencent par des “télécommandes” ). Exemple:

 # this will show all twigs (local & remote) that start with my $ git branch --list 'my*' -a * my-branch # better: the pattern includes the remote $ git branch --list '*my*' -a * my-branch remotes/origin/my-branch 

Documents: https://git-scm.com/docs/git-branch

Maintenant, vous pouvez comparer deux twigs parmi toutes celles disponibles (vous pouvez également comparer deux sections locales ou deux télécommandes).

Ici, je compare le local avec le my-branch distant, ils sont synchronisés, donc je ne reçois aucune sortie:

 $ git diff my-branch remotes/origin/my-branch 

Note: vous devez donner les noms complets des twigs sans guillemets.

Je peux aussi comparer la my-branch locale au master distant. Ici, je reçois des résultats car la my-branch distante n’a pas été fusionnée dans la twig principale.

 $ git diff my-branch remotes/origin/master diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js index fd79b98..df3d798 100644 --- a/src/controllers/call.controller.js +++ b/src/controllers/call.controller.js @@ -261,7 +261,7 @@ function callController() { /* * Function: doCall [ . . . ] 

Si vous voulez voir la différence avec seulement les noms des fichiers modifiés, utilisez:
git diff --name-status ,
sinon cela montrerait toutes les différences entre les deux twigs:
git diff

 git difftool  . 

Cela comparera le commit souhaité avec vos fichiers locaux. N’oubliez pas le point à la fin (pour le local).

Par exemple, pour comparer vos fichiers locaux avec une validation:

git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.

(et vous n’avez pas besoin de récupérer git, sauf si la comparaison avec de nouveaux commits est nécessaire)

Exemple

 git diff 'master' 'testlocalBranch' 

Si vous utilisez un éditeur comme Webstorm, vous pouvez cliquer avec le bouton droit de la souris sur Sélectionner fichier avec twig et sélectionner / sélectionner votre twig.

entrer la description de l'image ici

entrer la description de l'image ici

Installer

git config alias.udiff 'diff @{u}'

HEAD différent avec HEAD @ {upstream}

 git fetch git udiff 

Je me demande s’il y a un changement dans ma twig master

  1. Tout d’abord, vous devez changer de twig (si vous êtes déjà sous cette twig, vous n’avez pas besoin de le faire!)

git checkout master

  1. Vous pouvez voir quel fichier a été modifié sous votre twig principale par cette commande

statut git

  1. Liste des twigs

twig git -a

  • maîsortingser
    télécommandes / origine / maître
  1. Trouvez les Différences

git diff origine / maître