Enregistrement opération de copie de fichier avec Git
Lorsque je déplace un fichier à l'aide de git git-mv le statut indique que le fichier a été renommé et même si je modifier certaines parties il juge encore presque la même chose (ce qui est bien car il me permet de suivre l'histoire de l'informatique).
Quand je copie un fichier, le fichier d'origine est un peu l'histoire, je voudrais associer à la nouvelle copie.
J'ai essayé de déplacer le fichier puis d'essayer de re-départ dans l'emplacement d'origine - une fois déplacé git ne me laisse pas la caisse de l'emplacement d'origine.
J'ai essayé de faire une copie de système de fichiers, puis en ajoutant le fichier git répertorie en tant que nouveau fichier.
Est-il possible de faire git enregistrement d'une opération de copie de fichier d'une manière similaire à la façon dont il enregistre un fichier renommer/déplacer où l'histoire peut être retracée dans le fichier d'origine?
Vous devez vous connecter pour publier un commentaire.
Git ne fait pas de renommer le suivi, ni copier le suivi, ce qui signifie qu'il ne soit pas enregistrement renomme ou des copies. Ce qu'il fait est plutôt renommer et copier des détection. Vous pouvez demander de renommer la détection dans
git diff
(etgit show
) à l'aide de la-M
option, vous pouvez demander une copie de détection dans les fichiers modifiés à l'aide de la-C
option (-C
implique-M
), et vous pouvez demander plus cher copie de détection parmi tous les fichiers avec--find-copies-harder
ou-C -C
(ce qui implique-C
, ce qui implique-M
). Voir la git-diff page de manuel.Vous pouvez également configurer git toujours faire de renommer la détection par la mise en
diff.renames
à la valeur booléenne true (par exempletrue
ou1
), et vous pouvez demander à git de faire copier détection trop en le définissant parcopy
oucopies
. Voir la git-config page de manuel.Vérifier également la
-l
option pourgit diff
et la variable de configdiff.renameLimit
.Noter que
git log <pathspec>
fonctionne différemment dans Git: ici<pathspec>
est l'ensemble de séparateurs de chemin, où le chemin peut être un (sous)nom de répertoire. Il filtre et simplifie l'histoire avant de renommer et de détection de copie entre en jeu. Si vous voulez suivre les renommages et les copies, utilisationgit log --follow <filename>
(qui est actuellement un peu limité, et ne fonctionne que pour un seul fichier).diff.renames
àcopies
(par exemple 'git config diff.renames copies
'). Je suis d'accord que c'est un peu paradoxal.Vous pouvez forcer Git pour détecter l'histoire de la copie d'un fichier:
(Solution de prise de https://stackoverflow.com/a/44036771/1389680.)
move
etrename
?mv
pour les deux opérations? J'ai été à l'aide de "déplacer" pour le cas qui peut impliquer la modification du fichier de répertoire, et "renommer" pour il y a des cas où ça ne marche pas.