401 votes

git checkout par date

Je travaille sur une régression dans le code source. Je tiens à dire git : « commander la source basée sur une date/heure paramétrée ». Est-ce possible ? J’ai mise en scène des changements à mon avis actuel que je ne veux pas perdre. Idéalement, je voudrais passer en arrière de la source de courant et une version que je suis intéressé par basé à une date antérieure.

452voto

Andy Points 9657

Pour conserver vos modifications en cours

Vous pouvez garder votre travail dissimulé, sans s'engager, avec git stash. Vous serait que d'utiliser git stash pop pour le récupérer. Ou vous pouvez faire comme carleeto dit et git commit à une branche distincte.

Options de paiement en date

  1. La caisse par date en utilisant rev-parse Vous pouvez payer une livraison à une date précise à l'aide de rev-parse comme ceci

    git checkout 'master@{1979-02-26 18:30:00}'
    

    Plus de détails sur les options disponibles peuvent être trouvés dans la git-rev-parse

    Comme indiqué dans les commentaires de cette méthode utilise le reflog de trouver l'engagement dans votre histoire. Par défaut, ces entrées expire au bout de 90 jours. Bien que l' syntaxe d'utilisation de la reflog est moins verbeux vous ne pouvez revenir en arrière à 90 jours.

  2. La caisse par date en utilisant rev-liste
    L'autre option, qui n'utilise pas le reflog, est d'utiliser rev-liste pour obtenir le s'engager à un point particulier dans le temps avec

    git checkout `git rev-list -n 1 --before="2009-07-27 13:37" master`
    

162voto

Rocky Points 1384

Solution d’Andy ne fonctionne pas pour moi. Ici, j’ai trouvé une autre façon :

Git : extraction par date

21voto

C.. Points 10739

On dirait que quelque chose dans le sens de ce dont vous avez besoin : Git checkout basé sur la date

En d’autres termes, vous utilisez `` pour trouver la validation puis utilisez checkout pour le faire réellement.

Si vous ne voulez pas perdre vos modifications de mise en scène, la chose la plus facile serait de créer une nouvelle branche et elles s’engagent à cette branche. Vous pouvez toujours basculer en arrière entre les branches.

15voto

Steven Penny Points 18523

Pour ceux qui préfèrent un tuyau à la substitution de commande

3voto

egerlach Points 11

Aller plus loin avec le `` option, si vous voulez trouver le plus récent commit de fusion de la branche master dans votre branche de production (comme un exemple purement hypothétique) :

J’avais besoin de trouver le code qui était sur les serveurs de production à une date donnée. C’était pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X