web-dev-qa-db-fra.com

Aller à la révision particulière

J'ai cloné un dépôt git d'un certain projet. Puis-je activer les fichiers à l'état initial et lorsque je les examine, passer aux versions 2, 3, 4 ... les plus récentes? J'aimerais avoir un aperçu de l'évolution du projet.

473
xralf

Utilisez git checkout <sha1> pour extraire un commit particulier.

719
Marcelo Cantos

Pour aller à une version/commit particulière, exécutez les commandes suivantes. HASH-CODE vous pouvez obtenir de git log --oneline -n 10

git reset --hard HASH-CODE

Note - Après avoir réinitialisé une version/validation particulière, vous pouvez exécuter git pull --rebase, si vous souhaitez ramener toutes les validations qui ont été ignorées.

36
J4cK

Vous pouvez obtenir une vue graphique de l'historique du projet avec des outils tels que gitk. Il suffit de courir:

gitk --all

Si vous souhaitez utiliser une branche spécifique:

git checkout <branch name>

Pour un commit spécifique, utilisez le hachage SHA1 au lieu du nom de la branche. (Voir Treeishes dans le Livre de la communauté Git , qui est une bonne lecture, pour voir d'autres options de navigation dans votre arbre.)

git log dispose de tout un ensemble d'options pour afficher l'historique détaillé ou récapitulatif.

Je ne connais pas de moyen facile de déplacer en avant dans un historique de commit. Les projets avec une histoire linéaire ne sont probablement pas si communs. L'idée d'une "révision" comme celle que vous auriez avec SVN ou CVS ne cartographie pas très bien dans Git.

18
Mat

En utilisant la clé SHA1 d'un commit, vous pouvez effectuer les opérations suivantes:

  • Tout d’abord, trouvez le commit que vous voulez pour un fichier spécifique:

    git log -n <# commits> <file-name>

    Ceci, basé sur votre <# commits>, générera une liste de validations pour un fichier spécifique.

    CONSEIL: si vous n’êtes pas sûr de la nature de la validation que vous recherchez, un moyen efficace de le savoir consiste à utiliser la commande suivante: git diff <commit-SHA1>..HEAD <file-name>. Cette commande montrera la différence entre la version actuelle d'un commit et une version précédente d'un commit pour un fichier spécifique.

    REMARQUE: la clé SHA1 d'un commit est formatée dans la liste de git log -n comme suit:

commit <SHA1 id>

  • Deuxièmement, vérifiez la version souhaitée:

    Si vous avez trouvé la version/commit désirée, utilisez simplement la commande: git checkout <desired-SHA1> <file-name>

    Cela placera la version du fichier que vous avez spécifié dans la zone de stockage intermédiaire. Pour le sortir de la zone de stockage intermédiaire, utilisez simplement la commande suivante: reset HEAD <file-name>

Pour revenir à l'endroit où le référentiel distant est pointé, utilisez simplement la commande: git checkout HEAD <file-name>

5
Wizard

J'ai créé un outil en ligne de commande python pour voir comment un projet a évolué. vous pourriez voir si cela aide. L'outil est hébergé sur le git à l'adresse suivante

https://github.com/yoganand/git-evolver

3

J'étais dans une situation où nous avons une branche master, puis une autre branche appelée 17.0 et à l'intérieur de cette version 17.0, il y avait un commit hash no say "XYZ". Et le client reçoit une construction jusqu'à cette révision XYZ. Nous sommes maintenant tombés sur un bug qui doit être résolu pour ce client. Nous devons donc créer une branche distincte pour ce client jusqu'à ce que le hachage "xyz". Alors voici comment je l'ai fait.

J'ai d'abord créé un dossier avec ce nom de client sur mon ordinateur local. Dites que le nom du client est "AAA" une fois ce dossier créé, émettez le problème après la commande dans ce dossier:

  1. git init
  2. git clone Après cette commande, vous serez sur la branche master. Alors changez de branche
  3. git checkout 17. Ceci vous amènera à la branche où votre commit est présent
  4. git checkout Ceci conduira votre dépôt jusqu'à ce que le hash soit validé. Voir le nom de votre branche, il a été changé en commit hash no. Maintenant, donnez un nom de branche à ce hachage
  5. git branch ABC Ceci créera une nouvelle branche sur votre machine locale.
  6. git checkout ABC
  7. git Push Origin ABC Ceci poussera cette branche vers un référentiel distant et créera une branche sur le serveur git. Vous avez terminé.
1
ashish

Une façon serait de créer tous les commits jamais faits sur les correctifs. vérifiez la validation initiale, puis appliquez les correctifs dans l’ordre après la lecture.

utilisez git format-patch <initial revision> puis git checkout <initial revision>. vous devriez obtenir une pile de fichiers dans votre directeur en commençant par quatre chiffres qui sont les correctifs.

quand vous avez fini de lire votre révision, faites simplement git apply <filename> qui devrait ressembler à git apply 0001-* et comptez.

Mais je me demande vraiment pourquoi vous ne voudriez pas simplement lire les patchs à la place. S'il vous plaît poster ceci dans vos commentaires parce que je suis curieux.

le manuel de git me donne aussi ceci:

git show next~10:Documentation/README

Affiche le contenu du fichier Documentation/README tel qu’il était actuel lors de la 10ème dernière validation de la branche suivante.

vous pouvez aussi jeter un oeil à git blame filename qui vous donne une liste où chaque ligne est associée à un commit avec un hash + author.

1
Alex

J'aimerais mentionner l'outil de ligne de commande tig, apparemment disponible partout. Il s’agit d’une vue arborescente graphique avec affichage des balises, etc. de l’historique des révisions de projet. Il peut être utilisé sur ssh, etc. Super pratique.

1
std''OrgnlDave