web-dev-qa-db-fra.com

Comment rechercher un référentiel Git par message de validation?

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

Cependant, je ne semble plus pouvoir trouver ce code source. Comment extraire cette source du référentiel GIT à l'aide de la ligne de commande?

Mise à jour

  1. Vérifié dans les versions 0043, 0044, 0045 et 0046 à l'aide de SmartGIT.
  2. Extrait 0043 et archivé dans des versions allant jusqu'à 0051 sur une autre branche.
  3. Vérifié 0043 à nouveau.
  4. Maintenant, 0051 a disparu.

Mise à jour

Le code source est bien là, maintenant il s’agit de le 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>
721
Contango

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

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

Pour rechercher le contenu réel des commits dans l'historique d'un référentiel, utilisez:

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

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

Enfin, en dernier recours, si votre commit est en suspens et n'est pas du tout lié à l'historique, vous pouvez effectuer une recherche dans le journal lui-même avec l'indicateur -g (raccourci pour --walk-reflogs:

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

EDIT: si vous semblez avoir perdu votre historique, vérifiez la reflog comme votre filet de sécurité. Recherchez la version 0051 dans l’un des commits répertoriés par

git reflog

Vous pouvez simplement avoir défini votre HEAD sur une partie de l’histoire dans laquelle le commit 'Build 0051' n’est pas visible, ou bien vous l’avez peut-être balayé. L’article gog-ready peut être utile.

Pour récupérer votre commit à partir du reflog : effectuez une vérification git du commit que vous avez trouvé (et créez éventuellement une nouvelle branche ou balise 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
1119
shelhamer

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 je reçois une liste de tous les commits contenant cette chaîne dans le message. Par exemple, pour trouver tous les commits 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
72
Alex Howansky

Bien qu'un peu en retard, 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 de regex complexe composé d'espaces, alors assurez-vous de bien citer/échapper si nécessaire, par exemple:

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

Vous pouvez également spécifier un point de départ pour trouver la validation la plus proche accessible depuis un point spécifique, par exemple:

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

Voir: manuel de révisions git .

26
ryenus
git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).
20
Josh Lee
git log --grep="Build 0051"

devrait faire l'affaire

15
Noufal Ibrahim

Essaye ça!

git log | grep -b3 "Build 0051"
8
Nic

utilisez d’abord git log --oneline pour trouver le SHA de la validation (Message), puis j’ai utilisé git log --stat 8zad24d avec le SHA (le premier exemple de char Sha Cou (8zad24d) )) pour trouver la bonne information

3
Rida