Wie Sie Informationen bekommen, wo die Verzweigung beginnt?
Soweit ich weiß, commit-Objekt enthält nur Informationen über Eltern, also, wenn ich die situation etwas wie dies:
* branch-1
|
o
|
o master
|
o
die eine Art äquivalent
* branch-1
|
o
/
o master
|
o
aber was ist, wenn mein master wird Sie in die Zukunft gehen?
o master
|
o * branch-1
| |
o o
|/
o
|
o
auf ast-1, git log --graph --decorate
zeigt mir nur:
* branch-1
|
o
|
o
|
o
wenn ich wissen von welcher Filiale ich war, begann, die ich anrufen kann git merge-base master branch-1
, aber was ist, wenn ich nicht weiß, aus welcher Branche war ich gestartet?
PS.
Ich Lerne immer noch Englisch, aber manchmal mache ich dumme Fehler. Ich Tue mein bestes, schriftlich Fragen und Antworten in Englisch, aber ich würde mich sehr freuen, wenn Sie meinen Beitrag Bearbeiten im Falle von Fehlern. Ich verspreche, Ihr Aufwand wird nicht verschwendet werden.
- "aber was ist, wenn ich nicht weiß, aus welcher Branche war ich gestartet?" -- Verwenden Sie gitk? IMHO ist es unendlich helfen bei der Visualisierung der Beziehung zwischen den verschiedenen Branchen. Es gibt viele andere Visualisierungs-tools gibt es natürlich auch.
- Ich versuche git verwenden von CLI. Es hilft mir, besser zu verstehen, wie git funktioniert, aber ASAIR gitk auch nicht zeigen Sie mir den Namen 'Meister', wenn es schon paar commits Voraus
- Was wollen Sie erreichen? Sie scheinen zu wollen, die Begehen, wo die Niederlassung begonnen, aber warum? Vielleicht können Sie Ihr Ziel erreichen, ohne diese Informationen...
- siehe auch Suchen Sie eine Verzweigung mit Git?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wahr, dass git nicht dauerhaft gespeichert diese Informationen, aber Sie können wahrscheinlich finden sich sowieso. Git hat reflogs!
Wenn der branch erstellt wurde, in den letzten 90 Tagen (standardmäßig; verwenden
gc.reflogExpire
um dies zu ändern), die Letzte Zeile in das reflog wird die Schaffung der Branche.Gehe ich davon aus, dass hier, was Sie wissen wollen, die Begehen ein branch erstellt wurde und nicht, welche Filiale es-Gabel aus. Das wäre ein viel härter, um herauszufinden, meine beste Vermutung wäre, für jeden Zweig, seine position einnehmen, die zum Zeitpunkt Ihrer Ziel-branch erstellt wurde und sehen, ob es enthält die Ziel-Niederlassung Ausgangspunkt.
Die moral von der Geschichte hier ist, dass Sie ergreifen sollten, einen workflow, in dem Sie wissen, in welcher Branche Sie Gabel-Ihre Filiale aus. Neue features und bugfixes wird vermutlich beginnen bei einigen stabilen Punkt auf dem master-branch, und Unterthema Branchen benannt werden kann
<topic>-<subtopic>
als Erinnerung.Edit:
Okay, also lasst uns sagen, Sie wissen, dass ein Begehen und eine Zeit (in diesem Fall das Begehen und mal einen branch erstellt wurde und an). Sie sind auf der Suche, um herauszufinden, was der Zweig, der zu Begehen war auf an diesem Punkt.
Ich denke, dass sollte funktionieren wie ein bash-Skript/one-liner. Die Idee: für jeden Zweig, seine position einnehmen, die am angegebenen Datum und Zeit, und sehen, ob es das Ziel verpflichten. Wenn Sie möchten noch flexibler sein, könnte man testen, ob
$(git merge-base $(git-rev-parse $b@{$date_time}))
ist das Ziel verpflichten; das heißt, ob das Ziel verpflichten, war ein Vorfahren von den gegebenen Zweig in dieser Zeit.Natürlich auch, in Fällen, wenn Ihre Geschichte ist relativ sauber, können Sie immer
gitk --branches
odergit log --graph --branches [--oneline]
nur um zu sehen ein schönes Bild.7316b3d branch-1@{0}: commit: b11 07a106a branch-1@{1}: branch: Created from HEAD
. Bitte korrigieren Sie mich, wenn ich falsch bin, aber alle(?) Filialen erstellt werden, aus dem KOPF.Git nicht wirklich ein Konzept haben, wenn Sie möchten, fügen Sie diese, würden Sie hinzufügen müssen, um eine Heuristik, da alle git wirklich interessiert, ist das anbringen einer Beschriftung zu einem bestimmten commit in den Baum.
Ich denke, Sie suchen
Prüfen Sie diesen thread für eine ausführlichere Erklärung.
Stackoverflow-Antwort