Historique ou journal des commandes exécutées dans Git

96

Existe-t-il un moyen de garder une trace des commandes que j'ai utilisées dans Git sous Windows? Je souhaite afficher toutes les commandes que j'ai appliquées à mon référentiel.

Je veux pouvoir revenir en arrière dans l'historique des commandes et déterminer la commande qui a causé le problème, le cas échéant.

Voir l'historique des commits serait une chose, mais pour conserver un historique d'autres actions telles que la création d'une branche ou l'ajout d'une télécommande, sont-elles suivies?

nilMoBile
la source
3
C'est un peu un aparté, mais si vous regardez à l'intérieur .git/logs, vous verrez l'historique de ce que chaque branche a pointé.
Nayuki
1
@Nayuki Puisque pushing ne change pas l'état d'une branche locale, reflogapparemment ne les stocke pas push, donc regarder .git/logs/refs/remotes/*/*est le seul moyen de voir votre pushhistorique.
Kyle Strand

Réponses:

-8

git affichera les changements dans les commits qui affectent l'index, tels que git rm. Il ne stocke pas de journal de toutes les commandes git que vous exécutez.

Cependant, un grand nombre de commandes git affectent l'index d'une certaine manière, comme la création d'une nouvelle branche. Ces modifications apparaîtront dans l'historique des validations, que vous pouvez afficher avec git log.

Cependant, il y a des changements destructeurs que git ne peut pas suivre, tels que git reset.

Donc, pour répondre à votre question, git ne stocke pas d'historique absolu des gitcommandes que vous avez exécutées dans un référentiel. Cependant, il est souvent possible d'interpoler la commande que vous avez exécutée via l'historique des validations.

Alex
la source
2
En fait, comme une réponse ci-dessous le mentionne à juste titre, c'est le cas. "history" affiche la liste des commandes exécutées (depuis l'installation).
Umesh .A Bhat
2
Le shell stocke l'historique, mais pas git, non?
Alex
3
@UmeshABqui git historyserait utile pour voir par exemple quelles commandes ont été exécutées dans un clone particulier .
Kyle Strand
5
git reflogest ce que vous voulez. Voir la réponse ci-dessous.
Chéyo
3
@ cp.engr: L'OP demande l'historique des commandes git, pas les commits git. Cette réponse suggère de déduire les commandes des commits git, ce qui est un travail très difficile et pas toujours possible. git reflogmontre en fait les commandes elles-mêmes. De plus, BTW, le shell n'est qu'un moyen légèrement plus direct pour déduire les commandes git, mais un dépôt git peut être touché par plusieurs shells. Il vaut mieux demander à git quelles commandes ont été utilisées.
combinatorist
183

Vous pouvez voir l'historique avec git-reflog ( exemple ici ):

git reflog
Jweyrich
la source
18
@PauAI git reflog afficherait toutes les positions suivies par votre HEAD, mais pas toutes les commandes git. Les commandes Git qui ne bougent pas la tête (par exemple git branch -D my_precious_branch) n'apparaîtront pas là-haut.
Yonatan
@Yonatan, tu ne peux pas l'obtenir avec git reflog --all?
combinatorist
2
@combinatorist essayez d' ajouter une télécommande (comme l'OP a par exemple): git remote add foo bar. il n'apparaîtra pas dans git reflog --all, car il ne modifie pas le pointeur HEAD.
Yonatan
git reflogne me montre pas de commandes comme git statusaso., avec ou sans --allparamètre.
Lorenz le
62

Un journal de vos commandes peut être disponible dans l'historique de votre shell.

history

Si voir la liste des commandes exécutées ne vous convient pas, exportez la liste dans un fichier.

history > path/to/file

Vous pouvez restreindre le vidage exporté pour afficher uniquement les commandes contenant "git" en le canalisant avec grep

history | grep "git " > path/to/file

L'historique peut contenir des lignes formatées comme telles

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

En utilisant le numéro, vous pouvez réexécuter la commande avec un point d'exclamation

$ !518
git status -s
Aléatoire
la source
8

Si vous utilisez CentOS ou une autre saveur Linux, faites simplement Ctrl+ Rà l'invite et tapez git.

Si vous continuez d'appuyer sur Ctrl+ R, une recherche inversée dans votre historique sera effectuée pour les commandes commençant pargit

crmpicco
la source
7

Tapez historyvotre terminal. Ce n'est pas techniquement git, mais je pense que c'est ce que vous voulez.

ScottyBlades
la source
6

Si vous utilisez Windows PowerShell, vous pouvez taper "git" et appuyer sur F8. Continuez à appuyer sur F8 pour parcourir toutes vos commandes git.

Ou, si vous utilisez cygwin, vous pouvez faire la même chose avec ^ R.

se moquer
la source
Dans une session Windows normale, vous pouvez utiliser la touche F7 pour obtenir une petite fenêtre qui vous donne une liste de toutes les commandes entrées dans cette session
milso
0

J'ai découvert que dans ma version de git bash "2.24.0.windows.2" dans mon dossier "home" sous les utilisateurs de Windows, il y aura un fichier appelé ".bash-history" sans extension de fichier dans ce dossier. Il n'est créé que lorsque vous quittez bash.

Voici mon workflow:

  1. avant de quitter bash, tapez "history >> history.txt" [ENTER]
  2. quitter l'invite bash
  3. maintenez Win + R pour ouvrir la boîte de commande Exécuter
  4. entrer shell: profil
  5. ouvrez "history.txt" pour confirmer que mon texte a été ajouté
  6. Sur une nouvelle ligne, appuyez sur [F5] pour entrer un horodatage
  7. enregistrer et fermer le fichier texte de l'historique
  8. Supprimez le fichier ".bash-history" pour que la prochaine session crée un nouvel historique

Si vous voulez vraiment des points, je suppose que vous pouvez créer un fichier batch pour faire tout cela, mais cela me suffit. J'espère que ça aide quelqu'un.

utilisateur65795
la source