2009-11-03 7 views
24

Lors de l'utilisation de Git avec TortoiseGit: Est-ce que quelqu'un sait comment retourner un seul fichier (ou un référentiel complet) à une révision précédente?Git (TortoiseGit) - Comment retourner un fichier unique à une révision précédente, puis annuler la restauration?

Par exemple, j'ai un référentiel contenant plusieurs fichiers. Un fichier existe dans trois révisions (1; 2; 3). Maintenant, je veux passer de la révision 3 à 2.

TortoiseGit offre une fonction "Revert" dans la boîte de dialogue "Show log" qui permet de revenir à une révision spécifique, mais cela va rétablir tout le dépôt au lieu d'un un seul fichier.

Aussi, une fois que j'ai annulé quelque chose, je ne sais pas comment annuler le retour et revenir à la dernière révision.

Répondre

14

De la ligne de commande: git checkout est probablement ce que vous voulez.

La documentation montre un exemple de:

$ git checkout master~2 Makefile

de revenir Makefile à deux révisions de retour dans la branche principale

De l'intérieur TortoiseGit (via l'Explorateur Windows) il semble que vous pouvez faire avec les étapes suivantes:

  • Naviguez dans l'Explorateur vers le dossier où se trouve le fichier.
  • Faites un clic droit sur le fichier que vous souhaitez revenir, choisissez Show log dans le menu contextuel TortoiseGit
  • Dans la partie supérieure (« graphique ») sélectionnez la révision qui a la version du fichier que vous souhaitez revenir à
  • Dans la troisième section (liste de fichiers) un clic droit sur le fichier et choisissez Revert to this revision
  • Vous devriez obtenir un message comme 1 files revert to e19a77
  • +2

    Oui, vous avez raison, cela fonctionne parfaitement avec les outils de ligne de commande git, mais je suis à la recherche de la fonctionnalité correspondante dans TortoiseGit qui utilise également les outils de ligne de commande git en arrière-plan. – Alexander

    +0

    Semble être impossible avec la version actuelle de TortoiseGit. – Alexander

    +3

    Je pense que j'ai compris cela avec TortoiseGit, voir la réponse éditée. – mlibby

    18

    en TortoiseGit la réponse est à un clic droit sur le dossier du projet, puis cliquez sur Afficher le journal, puis cliquez avec le bouton droit sur le changement que vous souhaitez restaurer et cl ick Switch/Checkout à ceci .... Il vous permettra ensuite de procéder à partir de cet endroit étrange dans la pile de validation, ou une branche au cas où vous envisagez de commettre et que vous voulez que les choses restent saines.

    +1

    Je pense que cela va changer tout le projet – quangkid

    6

    mis à jour ma réponse, en fonction de ces commentaires:


    Supposons l'arbre de travail est propre et que vous voulez:

    1. Commander un certain fichier (s) de sa précédente révision
    2. Test
    3. Revenir à la révision en cours

    1. Commander un certain fichier (s) de sa précédente révision

      (a) clic droit sur le fichier que vous voulez restaurer et Afficher le journal de ce fichier

      enter image description here

      (b) Faites un clic droit sur le fichier dans la liste des fichiers et exécutez Rétablir la révision parente

      enter image description here

      enter image description here

      (c) répéter (a), (b) jusqu'à ce que vous obtenez tous les fichiers que vous voulez.

      enter image description here

    2. Test

    3. Revert à la révision actuelle

      (a) effectuer Revert ... dans le menu contextuel de l'explorateur

      De cette façon, vous pouvez choisir la fichier (s) que vous voulez restaurer.

      (b) ou de cette façon rapide: effectuer Hard Reset Connexion dialogue

      De cette façon, tous les fichiers modifiés reviennent. (=> Perdu tous les changements répertoire de travail)

      enter image description here

      enter image description here

    (Testé sur TortoiseGit 1.8.16.1, 2.6.4.windows GFW.1, Win 10 64bit)

    +0

    Ceci est incorrect. Quelle version de TortoiseGit est-ce? Je ne pense pas que "Revenir à la révision parentale" est même plus présent. Rétablir est pour détruire les modifications de l'espace de travail local. La question ici est de demander à revenir à une version plus ancienne et revenir à la version actuelle plus tard, pas détruire la version actuelle. –

    +0

    La fonctionnalité Revert fait toujours quelque chose de différent de ce que recherchait le demandeur. –

    4

    Il est également possible d'obtenir un fichier spécifique:

    • Faites un clic droit sur le fichier
    • Choisissez l'élément de menu: Git Afficher le journal

    TortoiseGit affiche un dialogue avec une liste de toutes les révisions

    • Cliquez sur la révision précédente (2)

    Dans une liste dans le fond de la boîte de dialogue, il affiche tous les fichiers associés à la validation

    • Trouvez le fichier que vous cherchez à voir
    • Faites un clic droit sur ce fichier et Enregistrer révision
    • Cela permettra d'économiser que la révision précédente du fichier avec le numéro engagement concaténé sur le fichier

    par exemple: - fichier d'origine est un fichier txt - révision 2 va enregistrer en tant que fichier 67b51a8.txt

    J'utilise TortoiseGit v2.2.0.0

    +0

    Ceci est la meilleure réponse! les autres réponses sont probablement pour les versions précédentes de TortoiseGit avant d'ajouter cette fonctionnalité. – Justin

    0

    Pour la version 2.3.0 Tortue:

    Vous pouvez le faire de plusieurs façons , mais je pense le plus rapide est que:

    1. Faites un clic droit sur le fichier
    2. cliquez sur l'option de menu « Diff avec la version précédente »
    3. Faites un clic droit sur le à gauche (précédente) version du fichier
    4. Cliquez sur l'option de menu « Utiliser ce fichier entier »
    5. Enregistrez les modifications (ctrl + s)
    Questions connexes