Git ne suit pas renommemise à jour git index mv
j'avais un fichier dir1/some.class
. Je l'ai copié comme dir2/some.class
et commited + poussé. Quelques semaines plus tard, j'ai supprimé la version dir1
. Puis-je enseigner à git d'agir comme s'il s'agissait d'un mouvement plutôt que d'un nouveau fichier?
Donc tous les changements à dir1/some.class
que je fusionnerai d'autres branches fusionneront réellement en dir2/some.class
?
J'ai essayé avec
git checkout mybranch
git config merge.renameLimit 100
git merge --no-ff -X rename-threshold=80 master
git config --unset merge.renameLimit
certains des fichiers ont été fusionnés. Mais certains ne le font pas. Surtout ce qui me manque, c'est une capacité de journalisation git, pour voir les changements à dir2/class
ont été lancés au passé comme dir1/class
, mais cela n'arrive pas.
Ce qui m'a aidé était actualy
Seuil bas de changement de nom (10% de similarité de considérer un fichier renommé)
Grande merge.renameLimit (consomme beaucoup de RAM lors de la fusion)
git checkout mybranch
git config merge.renameLimit 999999
git merge --no-ff -X rename-threshold=10 -Xignore-space-change master
git config --unset merge.renameLimit
Consultez également la réponse ci-dessous.
Excellente suggestion. Je vais certainement essayer. Dommage, il y a beaucoup de renom dans le projet et ils ne sont pas si directs pour utiliser un script de renommage. Bien que j'ai peur de le renommer sur une nouvelle branche me ramènera à la même situation quand je vais essayer de fusionner tous les changements à master;) – Alex
C'est probablement la bonne réponse, donc je vais le marquer comme correct, mais ce qui a aidé moi diminue le rename-threshold et augmente le renameLimit parce que j'ai eu beaucoup de renommer après refactoring, sans structure concrète. – Alex