Après un pull Git, sa sortie donne un résumé du montant de la modification.
Comment puis-je voir les modifications détaillées de chacun ou de certains fichiers?
D'accord, voici ma question à Jefromi:
Comment savoir si je tirais vers le master? Tout ce que j'ai fait, c'est "git pull".
Sur quoi master pointe-t-il et quelle est la différence entre master et HEAD, les deux têtes par défaut de Git?
Comment puis-je voir la modification détaillée dans un fichier spécifique?
Comment puis-je voir la modification de la sortie récapitulative par le dernier git pull
encore?
Quelle est la différence entre git diff
et git whatchanged
?
Supposons que vous tentiez de maîtriser. Vous pouvez vous référer à la position précédente de master
par master@{1}
(ou même master@{10.minutes.ago}
; voir la section spécifiant les révisions de la page de manuel git-rev-parse ), afin que vous puissiez faire des choses comme
Voir toutes les modifications: git diff master@{1} master
Voir les modifications apportées à un fichier donné: git diff master@{1} master <file>
Voir toutes les modifications dans un répertoire donné: git diff master@{1} master <dir>
Voir à nouveau le résumé des modifications: git diff --stat master@{1} master
Quant à votre question "comment savoir si je suis maître" ... eh bien, l'utilisation des branches est une partie importante du workflow de Git. Vous devez toujours être conscient de la branche sur laquelle vous vous trouvez - si vous avez tiré des modifications, vous voulez les tirer vers la bonne branche! Vous pouvez voir une liste de toutes les branches, avec un astérisque par celui actuellement extrait, avec la commande git branch
. Le nom de la branche actuelle est également imprimé avec la sortie de git status
. Je recommande fortement de parcourir les pages de manuel des commandes à utiliser - c'est un excellent moyen d'acquérir lentement certaines connaissances.
Et votre dernière question: HEAD
est le nom de la branche actuellement extraite. Vous pouvez en effet utiliser HEAD
et HEAD@{1}
dans ce contexte également, mais c'est un peu plus robuste d'utiliser les branches, car si vous allez vérifier une autre branche. HEAD
est maintenant cette deuxième branche, 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 consulter un tutoriel Git. Il y en a un million sur le web, par exemple:
Disons que vous faites un git pull comme ceci:
$ 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 vers le master? Tout ce que j'ai fait, c'est "git pull".
La commande elle-même fonctionne comme ceci:
git pull [options] [<repository> [<refspec>…]]
et par défaut se réfère à la branche actuelle. Vous pouvez vérifier vos succursales en utilisant
git branch -a
Cela listera vos branches locales et distantes comme par exemple (Ajout d'un ---
comme séparateur entre local et distant 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 jetez un coup d'œil à un référentiel distant, vous verrez à quoi vous faites référence:
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 branches:
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ù tirer et de pousser.
. comment voir le changement de détail dans un fichier spécifique?
4. comment voir à nouveau le changement dans la sortie récapitulative par le dernier git pull?
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 tirage et l'état actuel du travail. Exemple de sortie (j'ai ajouté un ---
comme séparateur entre --stat
et --dirstat
sortie 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/
C'est un peu hacky de cette façon, 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 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 GUI pour voir les changements: P
J'aurais alors l'étape supplémentaire de faire un git checkout .
puis faire git pull
encore une fois pour que je tire et fusionne correctement, mais j'apprécie la possibilité d'examiner suffisamment les différences dans une interface graphique pour gérer les deux étapes supplémentaires.