Ich denke, git bisect
mit einer --no-parent
Flagge könnte dies leicht tun, aber es existiert nicht.
Das einzige, was mir einfällt, besteht darin, nur die Verzweigung in einem neuen Zweig neu zu erstellen. Hier ist ein Beispiel in der Linux-Shell:
$ git branch bisecttemp <first>
$ for h in `git log --oneline --decorate --first-parent --reverse --format=%H <first>..<last>`; do git checkout -f $h; sleep .5; git reset bisecttemp; git commit -am"$h"; git checkout testing; git reset --hard [email protected]{1}; done
dass ein bisecttemp abzweigen der <first>
macht commit wir interessieren, bekommt eine Liste der nur die Hashes zwischen den <first>
und <last>
Commits im Bereich wir kümmern uns um, Besuche je , setzt nach jedem auf den Zweig bisecttemp zurück, ohne den Arbeitsbaum zu ändern, schreibt alles anders mit dem Hash des Commits, von dem es kam, checkt bisecttemp erneut aus und setzt es dann zurück auf den letzten Platz head war, der der neue ist verpflichten.
Möglicherweise gibt es eine klügere Möglichkeit, all dies zu tun, aber die Grundlagen sind, dass es einen neuen Zweig am Anfang der Reihe von Commits erstellt, die uns wichtig sind, und dann den Status der Nur-Branch-Commits festlegt Commits und Merges, aber keine Sub-Branch-Commits) dazu, in der Reihenfolge. Sie können hier nicht einfach nur eine Auswahl treffen, da die Auswahl durch Chick-Picks auf die Eltern gerichtet ist, und das würde bei den Merge-Commits fehlschlagen.
Dies ist nicht wirklich getestet, und alles könnte falsch sein. Es ist nur ein Gedanke. Es könnte alles in einer Funktion aufgerollt werden, die eine Reihe von Commits benötigt.
Mögliche Duplikat: http://StackOverflow.com/Questions/5638211/How-Do-You-Get-Git-Bisect-To-ignore-merged-Branches – bacar