Réponses:
Utilisez git checkout <sha1>
pour extraire un commit particulier.
git log
ne montre que le premier commit maintenant, puis-je trouver le sha1 du prochain commit?
git log --oneline
et coller la sortie dans un fichier texte pour référence (les sommes abrégées sha1 qu'il fournit sont garanties d'être uniques). Une autre option, si votre historique est linéaire, est de déterminer le nombre de commits depuis le premier commit jusqu'à ce qu'ils soient master
utilisés git checkout master~543
(s'il y a 543 commits) git checkout master~542
, etc.
Pour accéder à une version / validation particulière, exécutez les commandes suivantes. CODE HASH que vous pouvez obtenirgit log --oneline -n 10
git reset --hard HASH-CODE
Remarque - 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 sont rejetées.
reset
pas seulement extraire un point particulier dans le graphique, il déplacera également votre branche actuellement extraite
reset
, toutes vos modifications en attente sont ignorées.
git pull --rebase
ne fonctionne que si vous avez une télécommande pour votre repo et qu'elle est à jour.
Vous pouvez obtenir une vue graphique de l'historique du projet avec des outils comme gitk
. Exécutez simplement:
gitk --all
Si vous souhaitez retirer une branche spécifique:
git checkout <branch name>
Pour une validation spécifique, utilisez le hachage SHA1 au lieu du nom de la branche. (Voir Treeish dans le Git Community Book , qui est une bonne lecture, pour voir d'autres options pour naviguer dans votre arbre.)
git log
dispose d'un ensemble d'options pour afficher également un historique détaillé ou résumé.
Je ne connais pas de moyen simple d' avancer dans l'historique des validations. Les projets avec une histoire linéaire ne sont probablement pas si communs. L'idée d'une "révision" comme vous le feriez avec SVN ou CVS ne correspond pas si bien à Git.
En utilisant la clé SHA1 d'un commit, vous pouvez effectuer les opérations suivantes:
Tout d'abord, recherchez le commit que vous souhaitez pour un fichier spécifique:
git log -n <# commits> <file-name>
Ceci, en fonction de votre <# commits>
, générera une liste de validations pour un fichier spécifique.
CONSEIL: si vous n'êtes pas sûr de vous engager cherchez, une bonne façon de savoir est d' 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 git log -n
liste des comme:
commettre
<SHA1 id>
Ensuite, vérifiez la version souhaitée:
Si vous avez trouvé la version / commit souhaité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 transfert. Pour le retirer de la zone de transit, utilisez simplement la commande: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>
J'étais dans une situation où nous avons une branche principale, puis une autre branche appelée 17.0 et à l'intérieur de cette 17.0, il y avait un hachage de validation sans dire "XYZ" . Et le client reçoit une version jusqu'à cette révision XYZ. Nous avons maintenant rencontré un bug et cela doit être résolu pour ce client. Nous devons donc créer une branche distincte pour ce client jusqu'à ce hachage "xyz". Voici donc comment je l'ai fait.
J'ai d'abord créé un dossier avec ce nom de client sur ma machine locale. Dites que le nom du client est "AAA" une fois que ce dossier est créé, émettez la commande suivante à l'intérieur de ce dossier:
Une façon serait de créer toutes les validations jamais apportées aux correctifs. extraire le commit initial puis appliquer les correctifs dans l'ordre après la lecture.
utiliser git format-patch <initial revision>
et ensuite 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 git apply <filename>
ce qui devrait ressembler
git apply 0001-*
et compter.
Mais je me demande vraiment pourquoi vous ne voudriez pas simplement lire les correctifs à la place? Veuillez 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 dans le 10ème dernier commit de la branche suivante.
vous pouvez également consulter git blame filename
ce qui vous donne une liste où chaque ligne est associée à un hachage de validation + auteur.
Pour accéder à un code validé spécifique, vous avez besoin du code de hachage de cette validation. Vous pouvez obtenir ce code de hachage de deux manières:
git log
et vérifiez vos validations récentes sur cette branche. Il vous montrera le code de hachage de votre validation et le message que vous avez laissé pendant que vous validiez votre code. Copiez et faitesgit checkout commit_hash_code
Après avoir migré vers ce code, si vous souhaitez travailler dessus et apporter des modifications, vous devez créer une autre branche avec git checkout -b <new-branch-name>
, sinon, les modifications ne seront pas conservées.
git log -n1
. Mais à moins d’git checkout
échouer, c’est un gaspillage d’efforts.