2017-02-21 3 views
0

Ma question concerne git et comment l'utiliser correctement. Ma connaissance est très basique.Inclure une partie de l'ancienne version du fichier validé dans la nouvelle version validée du fichier

J'ai accidentellement supprimé un bloc de code dans mon fichier, mais je l'ai seulement réalisé après avoir validé et poussé sur github. Avant de réaliser, j'ai fait des changements intentionnels supplémentaires que j'ai aussi commis et poussé. Maintenant, je souhaite inclure le bloc de code supprimé de façon non intentionnelle dans la version la plus récente (validée) de mon fichier.

(Comment) est-ce possible?

Répondre

2

Puisque vous avez déjà poussé votre commit, le modifier est potentiellement dangereux, car quelqu'un l'a peut-être vérifié et travaille maintenant dessus. Il serait plus propre d'ajouter le morceau dans un nouveau commit.

Il est cependant possible d'acquérir le morceau de code et de l'inclure dans la version la plus récente de votre fichier, mais vous devrez créer de nouveaux commits dans un sens ou dans l'autre.

Vous n'avez pas mentionné si vous utilisez un type d'interface graphique, donc je suppose que vous utilisez git par ligne de commande. Option 1: Pour l'ajouter en tant que nouvelle validation au-dessus de votre ancien commit, utilisez votre outil de choix pour afficher votre historique de repos (ce serait gitk sur la ligne de commande), trouvez le commit pré-précédent, copiez le morceau qui a été supprimé, collez-le dans votre code actuel et validez le morceau nouvellement ajouté.

Option 2: Pour revenir dans l'histoire de votre repositorys et changer la suppression en premier lieu, vous pouvez utiliser

git reset HEAD~2 

pour réinitialiser votre référentiel central par deux commits. Les modifications introduites par vos deux validations apparaissent désormais comme des modifications non-planifiées dans votre répertoire de travail. Pour revenir à la suppression du morceau que vous souhaitez conserver, vous pouvez annuler vos modifications dans le fichier entier (s'il n'y a pas d'autres changements) par

git checkout -- <filename> 

ou annuler simplement la suppression du morceau par

git checkout -p <filename> 

et en suivant les instructions à l'écran. Ensuite, vous pouvez valider vos modifications, soit en une seule fois, soit en deux, comme elles l'étaient initialement. Quand vous voulez pousser, vous devrez forcer l'écrasement avec l'argument --force, puisque votre historique diffère de celui en amont. Sachez que C'EST POTENTIELLEMENT DESTRUCTEUR.