Changement de détail après Git pull

Après un tirage Git, sa sortie donne un résumé du montant de la modification.

Comment puis-je voir chaque modification de certains fichiers?

Okay, voici ma question à Jefromi:

  1. Comment savoir si je tirais pour maîsortingser? Tout ce que j’ai fait c’est “git pull“.

  2. Qu’est-ce que le maître indique et quelle est la différence entre master et HEAD, les deux chefs par défaut de Git?

  3. Comment voir la modification détaillée dans un fichier spécifique?

  4. Comment est-ce que je vois le changement dans la sortie de résumé par le dernier git pull ?

  5. Quelle est la différence entre git whatchanged et git whatchanged ?

Supposons que vous tiriez pour maîsortingser. Vous pouvez vous référer à la position précédente de master par master@{1} (ou même master@{10.minutes.ago} ; reportez-vous à la section spécification des révisions de la page de manuel git-rev-parse ) pour pouvoir faire les choses comme

  • Voir toutes les modifications: git diff master@{1} master

  • Voir les modifications apscopes à un fichier donné: git diff master@{1} master

  • Voir toutes les modifications dans un répertoire donné: git diff master@{1} master

  • Voir à nouveau le résumé des modifications: git diff --stat master@{1} master

En ce qui concerne votre question de savoir “comment savoir si je suis maître” … l’utilisation de twigs est une partie importante du stream de production Git. Vous devez toujours être au courant de la twig sur laquelle vous vous trouvez – si vous retirez des modifications, vous voulez les amener dans la bonne twig! Vous pouvez voir une liste de toutes les twigs, avec un astérisque par celui qui est actuellement extrait, avec la commande git branch . Le nom de la twig en cours est également imprimé avec la sortie du git status . Je recommande fortement de parcourir les pages de manuel des commandes à utiliser – c’est un excellent moyen de prendre lentement connaissance.

Et votre dernière question: HEAD est le nom de la twig actuellement extraite. Vous pouvez en effet utiliser HEAD et HEAD@{1} dans ce contexte également, mais il est un peu plus robuste d’utiliser les twigs, car si vous consultez une autre twig. HEAD est maintenant cette deuxième twig, et HEAD@{1} est maintenant master – pas ce que vous voulez!

Pour éviter d’avoir à poser beaucoup de petites questions comme celle-ci, vous devriez probablement jeter un coup d’œil à un didacticiel Git. Il y a un million sur le web, par exemple:

  • Le livre Pro Git
  • Git Magic
  • et les 4,5 millions de visites sur Google pour “tutoriel Git”

Disons que vous faites un truc comme ça:

 $ git pull remote: Counting objects: 10, done. remote: Compressing objects: 100% (6/6), done. remote: Total 6 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (6/6), done. From [email protected]:reponame a407564..9f52bed branchname -> origin/branchname Updating a407564..9f52bed Fast forward .../folder/filename | 209 ++++++++----- .../folder2/filename2 | 120 +++++++++++--------- 2 files changed, 210 insertions(+), 119 deletions(-) 

Vous pouvez voir la différence de ce qui a changé en utilisant les numéros de révision:

 $ git diff a407564..9f52bed 

1. Comment savoir si je tirais pour maîsortingser? Tout ce que j’ai fait c’est “git pull”.

La commande elle-même fonctionne comme ceci:

 git pull [options] [ […]] 

et par défaut fait référence à la twig en cours. Vous pouvez vérifier vos twigs en utilisant

 git branch -a 

Cela listera vos twigs locales et distantes comme par exemple (Ajout d’un --- comme diviseur entre local et remote pour le rendre plus clair)

 *master foo bar baz --- origin/HEAD -> origin/master origin/deploy origin/foo origin/master origin/bar remote2/foo remote2/baz 

Lorsque vous regardez alors un repo à distance, vous verrez à quoi vous vous référez:

 git remote show origin 

listera comme suit:

 * remote origin Fetch URL: ssh://[email protected]:12345/username/somerepo.git Push URL: ssh://[email protected]:12345/username/somerepo.git HEAD branch: master Remote twigs: foo tracked master tracked Local refs configured for 'git push': foo pushes to foo (up to date) master pushes to master (fast-forwardable) 

Il est donc assez facile de savoir d’où il faut tirer et pousser.

3. comment voir le détail changer dans un fichier spécifique?

4. comment voir à nouveau le changement du résultat sommaire par dernier tirage?

La manière la plus simple et la plus élégante (imo) est:

 git diff --stat master@{1}..master --dirstat=cumulative,files 

Cela vous donnera deux blocs d’informations sur les changements entre votre dernier appel et l’état actuel du travail. Exemple de sortie (j’ai ajouté un --- comme séparateur entre les --stat et --dirstat pour le rendre plus clair):

  mu-plugins/media_att_count.php | 0 mu-plugins/phpinfo.php | 0 mu-plugins/template_debug.php | 0 themes/dev/archive.php | 0 themes/dev/category.php | 42 ++++++++++++++++++ .../page_templates/foo_template.php | 0 themes/dev/style.css | 0 themes/dev/tag.php | 44 +++++++++++++++++++ themes/dev/taxonomy-post_format.php | 41 +++++++++++++++++ themes/dev/template_parts/bar_template.php | 0 themes/someproject/template_wrappers/loop_foo.php | 51 ++++++++++++++++++++++ --- 11 files changed, 178 insertions(+) 71.3% themes/dev/ 28.6% themes/someproject/template_wrappers/ 100.0% themes/ 27.2% mu-plugins/ 9.0% themes/dev/page_templates/ 9.0% themes/dev/template_parts/ 63.6% themes/dev/ 9.0% themes/someproject/template_wrappers/ 72.7% themes/ 

De cette manière, c’est un peu piraté, mais cela vous permettra d’utiliser des outils graphiques comme gitk ou gitg ou git-gui :

 git pull git reset HEAD@{1} gitg (or gitk or whatever tool you like) 

La réponse avec le plus grand nombre de votes positifs donne le meilleur moyen d’utiliser l’outil git, mais j’utilise cette méthode car je peux ensuite utiliser des outils avec interface graphique pour voir les changements: P

J’aurais alors la possibilité de faire un git checkout . et puis faire à nouveau git pull pour que je tire et fusionne correctement, mais j’apprécie la possibilité d’examiner les différences dans une interface graphique suffisante pour gérer les deux étapes supplémentaires.