Comment get des informations là où la succursale commence?

Pour autant que je sache, l'object commit contient uniquement des informations sur les parents, donc si j'ai une situation comme celle-ci:

* branch-1 | o | o master | o 

qui est une sorte d'équivalent de

  * branch-1 | o / o master | o 

mais si mon maître va aller de l'avant?

  o master | o * branch-1 | | oo |/ o | o 

étant sur la twig-1, git log --graph --decorate me montrera seulement:

  * branch-1 | o | o | o 

Si je sais de quelle twig j'ai été démarré, je peux appeler git merge-base master branch-1 , mais que se passe-t-il si je ne sais pas de quelle twig j'ai été démarré?


PS. J'apprends toujours l'anglais, mais parfois je fais des erreurs stupides. Je fais de mon mieux, en écrivant des questions et des réponses en anglais, mais je serais très heureux si vous éditez mon post en cas d'erreurs. Je promets que vos efforts ne seront pas gaspillés.

Solutions Collecting From Web of "Comment get des informations là où la succursale commence?"

Il est vrai que git ne stocke pas de manière permanente cette information, mais vous pouvez probablement le savoir de toute façon. Git a des reflogs!

 git reflog show <branch> 

Si la twig a été créée au cours des 90 derniers jours (par défaut, utilisez gc.reflogExpire pour changer cela), la dernière ligne de ce refog sera la création de la twig.

Je suppose ici que ce que vous voulez savoir, c'est le commit auquel une twig a été créée, et non la twig dont elle est issue. Ce serait beaucoup plus difficile à find – ma meilleure estimation serait, pour chaque twig, prendre sa position au moment où votre twig cible a été créée et voir si elle comprend le sharepoint départ de la twig cible.

La morale de l'histoire ici est que vous devriez adopter un stream de travail dans lequel vous savez de quelle twig vous avez bifurqué votre twig. Les nouvelles fonctionnalités et corrections de bugs commenceront vraisemblablement à un point stable de votre twig master, et les twigs de sous-thèmes peuvent être nommées <topic>-<subtopic> comme callback.

Modifier:

Bon, alors disons que vous connaissez un commit et un time (dans ce cas, le commit et l'heure à laquelle une twig a été créée). Vous cherchez à savoir sur quelle twig se trouvait ce commit à ce moment-là.

 git for-each-ref --format='%(refname)' refs/heads/* | while read b; do if [ "$(git rev-parse $b@{$date_time})" = "$target_commit" ]; then echo "branch $b contained commit $target_commit at $date_time" fi done 

Je pense que cela devrait fonctionner comme un script bash / one-liner. L'idée: pour chaque twig, prenez sa position à la date et l'heure données, et voyez s'il s'agit de la cible. Si vous voulez être encore plus flexible, vous pouvez tester si $(git merge-base $(git-rev-parse $b@{$date_time})) est le commit cible; c'est-à-dire, si le commit cible était un ancêtre de la twig donnée à ce moment-là.

Et bien sûr, dans les cas où votre historique est relativement propre, vous pouvez toujours utiliser gitk --twigs ou git log --graph --twigs [--oneline] pour voir une belle image.

Git n'a pas vraiment un concept de ceci, si vous voulez append ceci, vous auriez besoin d'append une heuristique, parce que tout ce qui count vraiment, c'est d'attacher une label à un commit donné dans l'tree.

Je suppose que vous cherchez

 git log --graph --oneline --all 

Vérifiez ce fil pour une explication plus détaillée. Stackoverflow réponse