Question Comment rechercher un dépôt Git par message de validation?


J'ai vérifié le code source dans GIT avec le message de validation "Build 0051".

Cependant, je n'arrive plus à trouver ce code source - comment puis-je extraire cette source du dépôt GIT, en utilisant la ligne de commande?

Mettre à jour

  1. Vérifié dans les versions 0043, 0044, 0045 et 0046 en utilisant SmartGIT.
  2. Vérifié 0043, et vérifié dans les versions jusqu'à 0051 sur une branche différente.
  3. Retiré 0043 à nouveau.
  4. Maintenant, 0051 a disparu.

Mettre à jour

Le code source est définitivement là, maintenant c'est une question de vérifier:

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version:  v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date:   Fri Aug 19 17:24:51 2011 +0100

    20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.

C:\Source>

Mettre à jour

Utilisé ce qui suit pour récupérer le code source perdu:

C:\Source>git checkout HEAD@{10}
Previous HEAD position was aa09ace... 20110819 - 1045 - GL: Intermediate version. File     version: v0.5.0 build 0043.
HEAD is now at 77b1f71... 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.

Maintenant, tout est de nouveau visible dans SmartGit. Problème résolu - vous êtes les meilleurs, surtout @shelhamer!


549
2017-08-19 16:57


origine


Réponses:


Pour rechercher le journal de validation (dans toutes les branches) pour le texte donné:

git log --all --grep='Build 0051'

Pour rechercher le contenu réel des validations via l'historique d'un dépôt, utilisez:

git grep 'Build 0051' $(git rev-list --all)

pour afficher toutes les instances du texte donné, le nom du fichier contenant et le commit sha1.

Enfin, en dernier recours, au cas où votre commit serait suspendu et pas du tout lié à l'histoire, vous pouvez rechercher le reflet lui-même -g drapeau (abréviation de --walk-reflogs:

git log -g --grep='Build 0051'

EDIT: si vous semblez avoir perdu votre historique, vérifiez reflog comme votre filet de sécurité. Recherchez Build 0051 dans l'un des validations répertoriées par

git reflog

Vous avez peut-être simplement défini votre HEAD à une partie de l'histoire dans laquelle le commit 'Build 0051' n'est pas visible, ou vous l'avez peut-être effacé. le reflet git-prêt  article peut être utile.

Pour récupérer votre commit depuis le reflog: faire une vérification git du commit que vous avez trouvé (et éventuellement faire une nouvelle branche ou tag pour référence)

git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip

867
2017-08-19 17:00



Je mets ceci dans mon ~ / .gitconfig:

[alias]
    find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep

Ensuite, je peux taper "git find string" et j'obtiens une liste de tous les commits contenant cette chaîne dans le message. Par exemple, pour rechercher tous les validations référençant le ticket n ° 33:

029a641667d6d92e16deccae7ebdeef792d8336b Added isAttachmentEditable() and isAttachmentViewable() methods. (references #33)
M       library/Dbs/Db/Row/Login.php

a1bccdcd29ed29573d2fb799e2a564b5419af2e2 Add permissions checks for attachments of custom strategies. (references #33).
M       application/controllers/AttachmentController.php

38c8db557e5ec0963a7292aef0220ad1088f518d Fix permissions. (references #33)
M       application/views/scripts/attachment/_row.phtml

041db110859e7259caeffd3fed7a3d7b18a3d564 Fix permissions. (references #33)
M       application/views/scripts/attachment/index.phtml

388df3b4faae50f8a8d8beb85750dd0aa67736ed Added getStrategy() method. (references #33)
M       library/Dbs/Db/Row/Attachment.php

66
2017-08-19 17:07



git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).

18
2017-08-19 17:01



git log --grep="Build 0051"

devrait faire l'affaire


12
2017-08-19 17:02



Bien qu'un peu tard, il y a :/ qui est la notation dédiée pour spécifier une validation (ou une révision) basée sur le message de validation, il suffit de préfixer la chaîne de recherche avec :/, par exemple.:

git show :/message

Ici <message> peut être un motif regex complexe composé d'espaces, donc s'il vous plaît assurez-vous de citer / échapper si nécessaire, par exemple:

git log -1 -p ":/a few words"

Alternativement, un point de départ peut être spécifié, pour trouver la validation la plus proche accessible à partir d'un point spécifique, par exemple:

git show 'HEAD^{/fix nasty bug}'

Voir: git révisions manuel.


12
2017-08-16 02:52



Essaye ça!

git log | grep -b3 "Build 0051"

7
2017-08-19 17:00



d'abord utilisé git log --oneline pour trouver le SHA du commit (Message), alors j'ai utilisé git log --stat 8zad24d avec le SHA (l'exemple des premiers couples sha char (8zad24d)) pour trouver la bonne info


1
2018-06-09 16:55