Frage
Nach einem Git-Pull, seine Ausgabe gibt einen Überblick über die Änderungsgröße.
Wie kann ich alle oder einige der Dateien, die detaillierten Änderungen sehen?
Okay, hier ist meine Frage an Jefromi:
-
Wie kann ich wissen, ob ich Meister zog? Alles, was ich tat, ist "git pull".
-
Was bedeutet Master Punkt und was ist der Unterschied zwischen Master und HEAD, die zwei Standard-Köpfe von Git?
-
Wie kann ich die detaillierte Änderung in einer bestimmten Datei sehen?
-
Wie kann ich die Änderung in der Zusammenfassung Ausgabe vom letzten
git pull
wieder? -
Was ist Unterschied zwischen
git diff
undgit whatchanged
?
Lösung
Angenommen, Sie zu meistern sind zu ziehen. Sie können master
zur vorherige Position von master@{1}
beziehen (oder sogar master@{10.minutes.ago}
, siehe Angabe Überarbeitungen Abschnitt der git-rev-Parse-Mann ), so dass Sie Dinge wie
-
Sehen Sie alle Änderungen:
git diff master@{1} master
-
Sehen Sie die Änderungen in einer Datei:
git diff master@{1} master <file>
-
Sehen Sie alle Änderungen in einem bestimmten Verzeichnis:
git diff master@{1} master <dir>
-
Sehen Sie die Zusammenfassung der Änderungen wieder:
git diff --stat master@{1} master
Was Ihre Frage nach dem „Wie weiß ich, ob ich Meister bin“ ... na ja, Äste ist ein wichtiger Teil des Workflow-Git. Sie sollten immer bewusst sein, was Zweig du bist auf - wenn Sie Änderungen gezogen, wollen Sie sie auf dem rechten Zweig ziehen! Sie können durch die zur Zeit abgemeldeten ein, mit dem Befehl git branch
eine Liste aller Branchen, die mit einem Stern sehen. Der Stromzweig Name ist auch mit dem Ausgang des git status
gedruckt entlang. Ich empfehle, die man-Seiten von Befehlen Skimming zu verwenden -. Es ein guter Weg ist langsam etwas Wissen abholen zu
Und Ihre letzte Frage: HEAD
ist der Name für den aktuell ausgecheckt Zweig. Sie können in der Tat HEAD
und HEAD@{1}
in diesem Zusammenhang als auch verwenden, aber es ist ein bisschen robuster die Zweige zu verwenden, da, wenn Sie einen anderen Zweig gehen und Check-out. HEAD
ist nun, dass der zweite Zweig und HEAD@{1}
ist jetzt master
- nicht das, was Sie wollen
So zu speichern, die viele kleine Fragen zu stellen, sollten Sie vielleicht einen Blick auf ein Git-Tutorial haben. Es gibt eine Million auf dem Netz, zum Beispiel:
- Das Pro Git Buch
- Git Magie
- und die 4,5 Millionen Zugriffe auf Google für "Git Tutorial"
Andere Tipps
Sagen Sie tun, um eine git pull wie folgt aus:
$ 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 git@dev.example.com:reponame
a407564..9f52bed branchname -> origin/branchname
Updating a407564..9f52bed
Fast forward
.../folder/filename | 209 ++++++++-----
.../folder2/filename2 | 120 +++++++++++---------
2 files changed, 210 insertions(+), 119 deletions(-)
Sie können die diff von dem, was durch die Verwendung der Revisionsnummern geändert:
$ git diff a407564..9f52bed
1. Wie kann ich wissen, ob ich Meister zog? Alles, was ich tat, ist "git pull".
Der Befehl selbst funktioniert wie folgt:
git pull [options] [<repository> [<refspec>…]]
und pro Standard bezieht sich auf den aktuellen Zweig. Sie können Ihre Zweige unter Verwendung
prüfengit branch -a
Dies wird Ihre lokalen und Remote-Niederlassungen wie Liste für beispiele so (ein ---
als Teiler zwischen lokalen und Remote hinzugefügt, um es klar)
*master
foo
bar
baz
---
origin/HEAD -> origin/master
origin/deploy
origin/foo
origin/master
origin/bar
remote2/foo
remote2/baz
Wenn Sie dann einen Blick auf ein Remote-Repo nehmen, werden Sie sehen, was Sie sich beziehen:
git remote show origin
wird wie die folgende Liste:
* remote origin
Fetch URL: ssh://git@git.example.com:12345/username/somerepo.git
Push URL: ssh://git@git.example.com: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)
So ist es ganz einfach, sicher zu sein, wo man zieht aus und Push-to.
3. , wie die Detailänderung in einer bestimmten Datei sehen?
4. , wie wieder die Änderung der Zusammenfassung Ausgabe von im letzten git pull sehen?
Die einfachste und eleganteste Weg, (imo) ist:
git diff --stat master@{1}..master --dirstat=cumulative,files
Dies gibt Ihnen zwei Blöcke von Informationen über die Änderungen zwischen Ihrem letzten Zuge eines dem aktuellen Stand der Arbeit. Beispiel Ausgabe (Ich habe einen ---
als Teiler zwischen --stat
und --dirstat
Ausgang, um es klar):
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/
Diese Art der Art und Weise von hacky, aber es wird erlauben Sie grafische Werkzeuge wie gitk
oder gitg
oder git-gui
zu verwenden:
git pull
git reset HEAD@{1}
gitg (or gitk or whatever tool you like)
Die Antwort mit den meisten upvotes bietet die beste Möglichkeit, das git-Tool, aber ich benutze diese Methode, weil ich dann Werkzeuge mit GUI nutzen kann, um die Änderungen zu sehen: P
Ich würde dann den zusätzlichen Schritt zur Herstellung eines git checkout .
tun und dann wieder zu tun git pull
so, dass ich ziehen und merge richtig, aber ich schätze die Möglichkeit, mit den zusätzlichen zwei Schritten Unterschiede in einer GUI genug, um viel zu untersuchen.