J'ai une configuration git avec deux dépôts, tous les deux sont en lecture/écriture (je code habituellement sur un, mais parfois je code sur l'autre aussi). Mon flux de travail est généralement que je travaille sur mon rapport local, et quand je suis prêt à tester mes changements, je pousse mes commits à l'autre repo distant où je construis réellement mon projet. Pour une raison quelconque, quand je pousse de local à distant, les changements sur le référentiel distant sont "inversés", ie le référentiel est mis à jour, mais l'inverse des changements (ie les changements qui ramèneraient le repo distant à son état pré-poussé) sont enregistrés dans l'index.Pousser à distance git repo conserve l'ancien arbre dans l'index
Par exemple, dire que j'ai un fichier avec un commentaire // This is a comment
que j'ai mis à jour pour dire // This is a comment that has been updated
localement, puis poussé à mon repo à distance, je reçois le texte suivant sur mon repo à distance:
remote_repo$ git diff --cached
-// This is a comment that has been updated
+// This is a comment
Évidemment, je peux les amener dans le même état en exécutant git reset --hard
, mais y a-t-il un autre moyen de le faire et/ou de l'automatiser? Je m'attends à ce que la plupart des gens suggèrent d'ajouter un hook post-réception qui court git reset --hard
, mais j'espère que c'est configurable d'une manière propre.
Note de côté: ce qui est dans l'index à ce stade est ce qui était dans l'index * avant * le push. C'est la source du problème: l'index correspond à ce qui était le commit 'HEAD', mais' HEAD' lui-même a changé d'une manière ou d'une autre, et se résout maintenant en un commit différent, différent. Vous n'avez pas besoin d'une réinitialisation matérielle (une réinitialisation mixte suffit) mais en général c'est un peu un piège. – torek
Doh, cela a un sens total rétrospectivement. Je me rends compte que c'est un workflow maladroit, mais je possède les deux repos et ni l'un ni l'autre n'est accessible par quelqu'un d'autre alors le danger est vraiment juste un inconvénient. – DIMMSum