2016-12-06 4 views
1

Überspringen ich tue Bündel von Commits cherry-pickKirsche aus anderen Zweig Satz von Commits Pick leer Commits

git rev-list --reverse something-begin..something-end | git cherry-pick --stdin 

mit verschmelzen und dann endet mit Fehlermeldung

... 
You are currently cherry-picking commit xxxyyy. 

nothing to commit, working tree clean 
The previous cherry-pick is now empty, possibly due to conflict resolution. 
If you wish to commit it anyway, use: 

    git commit --allow-empty 

If you wish to skip this commit, use: 

    git reset 

Then "git cherry-pick --continue" will resume cherry-picking the remaining commits. 

Ich möchte nicht jeder holen dieser leeren Commits.

Es ist sehr ärgerlich, dass 10 für jeden Stopp eingegeben und aufgefordert wird.

Warum hat es keine --skip-empty Option zur Verfügung gestellt? Und dann habe ich auf diesen Thread bekam:

http://markmail.org/message/yowzaetyu32ulvz7

Es ist so schlimm, dass ich meine git Version 2.9.3 überprüfen und fand sogar cherry-pick es tun unterstützt weder --skip-empty oder --empty-commpit=skip oder andere.

Ich hatte überprüfen, dass git rev-list eine Option --remove-empty hat, aber es hat einfach nicht geholfen.

Antwort

3

Endlich fand ich die Lösung.

git rev-list --reverse something-begin..something-end . | git cherry-pick --stdin 

einen Punkt zu rev-list Befehl Hinzufügen (dh die Pfadteile) werden alle leeren Commits für mich überspringen (was ist --remove-empty für ??)

+0

Da die Dokumentation sagt, '--remove-empty' bedeutet "Stop, wenn ein bestimmter Pfad vom Baum verschwindet." Das heißt, aufhören, frühere Revisionen vollständig zu betrachten. – torek

+0

@torek Ja, ich hatte diese Zeile gelesen, und ich hatte bestätigt, dass das nicht das ist, was ich will. aber die Dokumentzeile "Stop, wenn ein bestimmter Pfad aus dem Baum verschwindet" ist nicht klar genug, ich verstehe einfach nicht, was es bedeutet. –

+0

Nun, überlege, was 'git rev-list' macht, wenn du es nur einmal commitest. Es druckt die ID des Commits und dann die ID des Elterns des Commits und dann die Eltern-ID dieses Elterns und dann das Elternteil dieses * Elternteils und eines anderen und eines anderen und so weiter. Wann hört * der * von Eltern zu Eltern auf? Die übliche Antwort ist: wenn es keine Eltern mehr gibt. Aber Sie können es früher stoppen. – torek

Verwandte Themen