2010-04-01 4 views
5

An meinem Arbeitsplatz haben wir einen "Master" Trunk-Zweig, der veröffentlichten Code darstellt. Um eine Änderung vorzunehmen, schaue ich mir eine Arbeitskopie an, erstelle eine Zweigstelle, verpflichte mich in die Zweigniederlassung, füge die Zweigniederlassung in den Master ein und drücke.Wie kann ich nur den Code, der für die Amtsleitung veröffentlicht wurde, "protokollieren"?

Für kleine Änderungen, ich könnte commit direkt zu master, dann drücken.

Mein Problem ist, dass wenn ich "git log" verwende, ich mich nicht um meine Themenzweige in meiner lokalen Arbeitskopie kümmere. Ich möchte nur die Änderungen im Master-Zweig auf dem entfernten, freigegebenen Git-Server sehen. Wenn ich --stat oder -p oder einen ihrer Freunde verwende, möchte ich die Dateien und Änderungen anzeigen, die mit dem Zusammenführungs-Commit zu master verbunden sind und nicht mit ihren ursprünglichen Verzweigungs-Commits verbunden sind (was, wie ich schon sagte, ich nicht Ich will überhaupt nicht sehen.

Wie gehe ich dabei vor?

+0

versuchen git log --merges. Reverse ist git log --no-merges. –

+0

git log --merges würde Commits direkt zum Master-Zweig überspringen. --stat würde die Änderungen, die bei Zweig-Commits für Themen auftreten, auch nicht mit den Zusammenführungs-Commits verknüpfen. Also - merges ist nicht ganz das was ich will. –

Antwort

1

Es klingt wie Sie tatsächlich diff wollen, und sich nicht anmelden, da es klingt wie Sie ein großes Angebot von --stat wollen, oder -p, anstatt es durch die commit aufgeschlüsselt es ursprünglich in passierte.

Dies zeigt Ihnen den Unterschied, was Ihr Master-Zweig (nach dem Zusammenführen in Ihrem Zweig Zweig) im Vergleich zu der Merge-Basis zwischen Ursprung/Master und Master hat. Wichtig ist hier, "..." statt ".." zu verwenden.

Wenn Sie dies alles sehen wollten, bevor Sie Ihr Thema in den Master zusammenfassen, können Sie den letzten "Master" im obigen Beispiel durch den Namen Ihres Zweigzweigs ersetzen oder ihn ganz auslassen, wenn Sie ihn gerade haben Themenzweig ausgecheckt.

git diff [--stat] origin/master... 
3

Diese den Trick tun sollten:

git log origin/master 

Sie können einen git fetch zuerst tun alle neuen Commits vom entfernten Ende nach unten ziehen (das sie in Ihrem lokalen Niederlassungen nicht fusionieren) .

0

Sie können git log --graph --oneline ausführen, die klarstellt, welche Commits auf dem aktuellen Zweig sind (obwohl es diejenigen nicht ausschließt, die nicht aus der Liste sind).

Wenn Sie git-svn verwenden, zeigt git log --grep git-svn-id nur commits mit git-svn-id in der Protokollnachricht an (die von git hinzugefügt wird, wenn ein Commit an svn übergeben wird).

Verwandte Themen