2009-06-24 3 views
5

Dokumentation sagt: "Da git-cherry den Changeset vergleicht und nicht die Commit-ID (sha1), können Sie mit git-cherry herausfinden, ob Sie lokal committen wurde unter einer anderen Commit-ID angewendet. "git cherry confusion - funktioniert nicht wie in doc beschrieben

Mal sehen:

$ git cherry master release-1.1.0 | head -1 
- 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
$ git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
... 
(cherry picked from commit 409c61b3304373a73c787fdf9c08cc338934b74d) 
... 

git show zeigt die gleiche changeset für 409c .. und 533e

$ git br --contains 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
release-1.1.0 
$ git br --contains 409c61b3304373a73c787fdf9c08cc338934b74d 
master 
release-1.0.4 

Das bedeutet, dass die Differenzmenge in beiden Master ist und Release-1.1.0. Wie kommt es, dass git cherry 533e .. zeigt?

Antwort

3

Es sagt auch "Die Commits werden mit ihrer Patch-ID verglichen, die aus dem git-Patch-ID-Programm erhalten wird.". Wenn Sie Ihr per Hand gegriffenes Diff angewendet haben, war es vielleicht ein etwas anderer Unterschied?

In diesem Fall unterscheidet sich nicht nur die Commit-ID, sondern auch die Patch-ID als git-patch-id, die unterschiedliche Patch-IDs für die Commits angibt und daher nicht als in den Zweigen der anderen betrachtet wird .

Es ist einfach, für diese zu überprüfen:

git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 | git-patch-id 
git show 409c61b3304373a73c787fdf9c08cc338934b74d | git-patch-id 

Wenn der erste SHA1 von git-patch-id zurück zwischen den beiden Läufen unterscheidet, das ist, was passiert ist.

Vorbehalt - ich habe meine Theorie nicht ausprobiert, aber so interpretiere ich die man-Seiten.

+1

Ich habe keine git-Patch-ID in meinem Pfad, aber 'git Patch-ID' funktioniert. –