it-swarm.com.de

Wie kann ich eingehende Commits in git sehen?

Mögliches Duplizieren:
Mit Git finde ich modifizierte Dateien zwischen lokal und remote

Wie kann ich eingehende Commits in git sehen? Oder noch besser, was ich gerade git fetchgit pulled habe?

_/Edit: Um die Frage zu klären: Jemand sagt mir, um ein paar Korrekturen zu erhalten, sollte ich aus ihrem Repository ziehen. Mein Ziel ist es zu sehen, was ihre Änderungen sind vorher Ich akzeptiere sie. git pull wird automatisch zusammengeführt, was ich nicht will. git fetch greift sie ohne zu verschmelzen, aber ich weiß nicht, wie ich genau sehen soll, was ich gerade hineingezogen habe. Der Grund für die ursprüngliche Formulierung ist, dass ich normalerweise Mercurial verwende, wobei der Befehl hg incoming <repo name here> lautet - ein Befehl, dem git zu fehlen scheint ein analoges.

148

incoming ist kein direktes Mapping in git, da Sie (und ich mache es oft) mehrere Repos haben, aus denen Sie ziehen, und jedes Repo hat mehrere Zweige.

Wenn es ein Äquivalent zu dem eingehenden Befehl von hg gäbe, wäre es wahrscheinlich so:

git fetch && git log ..Origin/master

Das heißt, "holen Sie sich all das Zeug vom Upstream und vergleichen Sie dann meinen aktuellen Zweig mit dem Upstream-Master-Zweig."

Ähnlich wäre ausgehend dies:

git fetch && git log Origin/master..

In der Praxis tippe ich diese einfach von Hand (obwohl ich für einen von ihnen einen Alias ​​erstellt habe), weil es einfach ist, viele lokale Zweige zu verfolgen und von vielen abgelegenen Zweigen verfolgt zu werden.

165
Dustin

Möglicherweise interessieren Sie sich auch für git whatchanged , das einen guten Überblick über die Änderungen gibt, die in einigen Commits vorgenommen wurden.

Wenn Sie überprüfen möchten, was Sie gerade abrufen möchten, führen Sie zuerst einen git fetch aus, der nur lokale Tracking-Zweige für das Remote-Repository (und keine Ihre - Zweige) aktualisiert, und verwenden Sie dann einen beliebigen Befehl, der die neue Commits, die Sie ziehen werden. Zum Beispiel:

git whatchanged ..Origin

Dies ist eine Abkürzung, um die Commits zwischen "dem gemeinsamen Vorfahren von wo immer ich jetzt bin und Origin" durch "Origin" darzustellen.

83
Greg Hewgill

Möglicherweise möchten Sie den Unterschied zwischen zwei Repositorys untersuchen. Angenommen, Sie verfügen über einen lokalen Zweig "Master" und einen Remote-Tracking-Zweig "Origin/Master", in dem andere Benutzer ihren Code festlegen, und Sie können unterschiedliche Statistiken über die Unterschiede der beiden Zweige erhalten:

git diff --summary master Origin/master

git diff --stat master Origin/master

git diff --numstat master Origin/master

git diff --dirstat master Origin/master

git diff --shortstat master Origin/master

git diff --name-only master Origin/master

git diff master Origin/master
11
Netzpirat

Wenn Ihnen jemand sagt, Sie sollen ziehen, erhalten Sie die Repo-URL und einen Zweig (standardmäßig master).

Ich würde es einfach tun

git fetch URL branch

gefolgt von einem (in absteigender Reihenfolge der Präferenz):

# note 3 dots in next 3 commands
gitk HEAD...FETCH_HEAD
    # shows all commits on both sides since the "fork" point
gitk --cherry-pick HEAD...FETCH_HEAD
    # as above but skips identical patches so you really see the differences
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD
    # I have a Nice alias for this; it's the text mode eqvt of the above

Ich benutze auch manchmal "tig", aber diese spezifische Verwendung (Sehen von beide Seiten) wird von tig nicht gut bedient.

Wenn Sie es jedoch auf zwei Punkte reduzieren (was Ihrer tatsächlichen Frage vielleicht eher entspricht, obwohl ich immer noch die 3-Punkte-Version vorziehen möchte), können Sie dies tun

tig HEAD..FETCH_HEAD

Hier sind die Aliase für die Bequemlichkeit:

incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD'
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD'
6
Sitaram

Es gibt keine "eingehenden Commits", die Benutzer lokal festlegen und "Push" drücken. Ich würde gitx oder gitk (das kommt mit git) öffnen und herausfinden, wie die Repos aussehen ... Ich denke, das gibt Ihnen eine klare Sicht.

verwenden Sie: gitk --all, um zu sehen.

1
JP Silvashy

Schau dir diesen Beitrag an . Er zeigt dir die Verwendung einer neuen Funktion, die in git Version 1.7 eingeführt wurde Wie finde ich Änderungen zwischen local und remote

0
prosieges