2017-02-24 4 views
3

Ich habe einen Git-Zweig develop, und auf diesem Zweig gibt es eine Reihe von Commits, die nur Debugging-Anweisungen sind und sollte nicht in Produktion sein. In der Zwischenzeit möchte ich eine Pull-Anforderung vom develop-Zweig auf unseren feature-Zweig erstellen, aber ich möchte die Debugging-Commits nicht einschließen.Git hält bestimmte Commits aus Pull-Anforderungen

Es scheint, wie meine zwei Möglichkeiten, dies zu tun sind, um (1) einen develop-copy Zweig erstellen, die entsprechenden Commits aus diesem Zweig fällt, und macht einen PR von develop-copy oder (2) fallen die entsprechenden von develop verpflichtet, macht die PR, dann cherry-Pick die Commits zurück in develop. Beides ist irgendwie ein Schmerz.

Gibt es eine Möglichkeit, eine bestimmte Gruppe von Commits zu schieben oder zwei Zweige zu haben, die Kopien von einander sind, außer für diese Commits? Vielen Dank.

+0

Wenn Sie nur bestimmte verpflichten schieben möchten, können Sie an dieser Antwort suchen http://stackoverflow.com/questions/3230074/git-pushing-specific-commit – afonte

+0

Ich denke, das ist eine Option, alles Quetschen, dass _istnot_ ein Debugging-Commit und dann das Commit. – jay

Antwort

0

Gibt es eine Möglichkeit, nur einen bestimmten Satz von Commits zu schieben oder zwei Zweige zu haben, die Kopien voneinander sind, außer für diese Commits?

Nein. Sie können nur Referenzen auf Commits pushen, und Commits werden durch ihren Inhalt und ihre Eltern definiert.

Ehrlich, anstatt Debug-Anweisungen in separaten Commits zu jonglieren, sollten Sie wahrscheinlich herausfinden, wie Sie sie lassen, aber für die Produktion optimieren.

+0

Einverstanden, aber meine Teamkollegen beschweren sich, dass die Debugging-Anweisungen in Code-Reviews Rauschen erzeugen. (Was, um fair zu sein, tun sie.) – jay

+0

In diesem Fall würde ich sicherstellen, dass Ihre Debug-Anweisungen in ihren eigenen Commits sind und sie einfach mit einem 'Rebase --interactive' fallen lassen, bevor Sie um eine Überprüfung bitten. Bedenken Sie, warum Sie so viele Debug-Anweisungen benötigen, um von der Code-Überprüfung abzulenken. Ich habe allgemein festgestellt, dass eine gute Unit-Test-Abdeckung ein besseres Verständnis von Code als Debug-Anweisungen liefert, obwohl YMMV. – dahlbyk

0

Eine andere Option ist rebase it interactively, wenn Sie der einzige Zweig sind, der an diesem Zweig arbeitet.

git checkout develop 
git rebase -i 
# reorder commits 
git push --force 

Sie können dann Commits neu anordnen, die Debug diejenigen in den letzten

setzen Dann können Sie einen neuen Zweig aus dem letzten Nicht-Debug-Start machen begehen, drücken Sie und Ihre PR aus diesem neuen Zweig zu machen.

0

Tun Sie einfach eine interaktive Rebase, git rebase master -i, und entfernen Sie entweder fixup die zufälligen Commits, die Sie aus der Pull-Anforderung möchten.

pick fdfb01e Real commit 
# pick a382ce3 Debugging some random issue 
# pick 02ff8dc Remove debugging code 
fixup ddf5e91 Add missing semicolon 
pick 73c7e11 Real commit