79 votes

Obtenir que Git reconnaisse les fichiers précédemment déplacés

J'ai déplacé manuellement un tas de fichiers sans y penser, et je ne parviens pas à trouver un moyen de faire en sorte que git reconnaisse que les fichiers viennent d'être déplacés et qu'il ne s'agit pas de fichiers vraiment différents. Y a-t-il un moyen de faire cela autre que supprimer l'ancien et ajouter le nouveau (et donc perdre l'historique), ou rétablir toutes les modifications avec git-mv?

73voto

Hugo Points 2156

Pour que git supprime les fichiers déjà supprimés ou déplacés, entrez simplement

 git add -u
 

23voto

Jorge Israel Peña Points 12602

Je pense qu'il a déjà fait cela. Maintenant, je peux me tromper, mais j'ai lu que git pistes fichiers en fonction de leur contenu pas en fonction de leur position dans le système de fichiers, ou en fonction delta/différences. Dans la pile je pense que cela montre que si les fichiers sont supprimés et la puis rajouté, mais je pense que j'ai essayé une fois et il a toujours conservé l'histoire, en raison de la manière précitée que git pistes choses.

Encore serait utile pour quelqu'un pour vérifier si je suis correct ou pas. Désolé si j'ai mal compris votre question.

12voto

Charles Bailey Points 244082

git ne pas suivre l'histoire de fichiers individuels, et il ne permet pas de traiter déplacements et copies spécialement, c'est il n'y a pas de métadonnées, qui indique que le déplacement ou la copie est produite. Au lieu de cela, chaque git commit est un instantané complet de l'arbre de travail.

Si vous souhaitez voir se déplace en git log vous pouvez approvisionnement en -M , en plus d'une option qui répertorie les fichiers qui ont été modifiés, par exemple

git log --summary -M

git vais regarder les arbres voisins dans la validation de l'histoire et d'en déduire si tous les fichiers où déplacé par chaque commit.

Pour trouver des copies ainsi que renomme vous pouvez utiliser l' -C option, vous pouvez fournir deux fois pour faire git regarder de plus près pour copie possible des sources au détriment de la performance.

git log --summary -M -C -C

Notons, que, comme git n'a pas stocker l'historique des fichiers (seulement commettre l'histoire), même si vous n' git rm et git mv le fichier, vous ne perdez pas toute l'histoire. Toutes les modifications sur le chemin serait encore enregistrées et visibles en git log.

5voto

Jakub Narębski Points 87537

Pour mieux comprendre pourquoi Git renomme la détection au lieu du suivi de renommage explicite (plus courant), et comment fonctionne la limitation de chemin , git log , vous pouvez lire le post de Linus sur Juno C Hamano, responsable de la Git (et références dans celui-ci).

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