2016-09-19 6 views
0

Je suis un débutant en git et actuellement en train d'essayer différentes combinaisons pour comprendre git.Git Hard Reset sur une seule confusion de fichier

J'ai cloné mon dépôt qui avait deux fichiers. Maintenant, j'ai fait des modifications à un fichier (disons "first.txt") et l'a commise à la mise en scène. Après cette étape, j'ai voulu réinitialiser le "first.txt" à son homologue distant de telle sorte qu'aucun historique de commit git lié à "first.txt" n'était présent pour ma branche. Maintenant, si j'utilise -

git checkout origin/master first.txt 

Cela vient remplacer mon fichier avec le fichier distant, mais git commit l'histoire de ce fichier n'a pas été remplacé.

Si je peux utiliser -

git reset --hard <sha1 commit id> 

alors il rétablit la branche à ce particulier et engager toutes les livraisons effectuées après y sont perdus. Maintenant, ce que je voulais comprendre était s'il y a une méthode par laquelle nous pouvons réinitialiser un fichier de telle sorte que tout son contenu et son historique de commit soient restaurés dans le contenu et l'historique de sa télécommande.

Merci d'avoir pris le temps de lire ma question! Si downvoting puis aimablement laissez-moi savoir quoi d'autre aurait pu être amélioré dans la question.

Merci

+0

http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-a-specific-revision -using-git – Salailah

+0

La méthode mentionnée dans le lien ci-dessus n'est utile que pour restaurer le contenu du fichier dans un commit spécifique. La première commande que j'ai mentionnée était la même. Le problème avec cette méthode est que l'historique de validation de ce fichier ne change pas en local. –

Répondre

3

Les validations représentent les modifications du référentiel entier. Si vous voulez travailler avec la restauration de fichier unique à son une autre version de vérification et de validation est la meilleure option. Sinon, vous devez restaurer toute mise en pension à sa télécommande comme ceci:

git reset --hard origin/master 
git pull origin master 
+0

Mais cela réinitialisera également toutes les validations locales effectuées dans d'autres fichiers. Ne pouvons-nous pas simplement restaurer un seul fichier de repo, y compris son histoire? –

+0

Je comprends qu'il peut y avoir une méthode de vérification de ce fichier à distance, puis de le valider. Mais il va alors créer des commits inutiles qui sont maintenant invalides. –

+1

Je ne pense pas que ce soit possible dans git. Les validations sont l'historique du référentiel entier. Vous ne pouvez pas restaurer l'historique de validation d'un fichier et ne pas affecter les autres. Extraire une version distante d'un fichier et la valider est la meilleure option ici. –