web-dev-qa-db-fra.com

Comment commettez-vous du code en tant qu'utilisateur différent?

Je veux pouvoir faire ceci pour un script. Je suis essentiellement en train de recréer l'historique de version complet de certains codes dans Git - il utilise actuellement un système de contrôle de version différent. J'ai besoin du script pour pouvoir ajouter les commits à Git tout en préservant son auteur original (et sa date).

En supposant que je connaisse l'auteur du commit et la date/heure de la modification, existe-t-il une commande Git qui me permet de le faire? Je suppose que oui, car git-p4 fait quelque chose de similaire. Je demande juste la meilleure façon de le faire.

104
Carl

Vérifiez --author option pour git commit:

De la page de manuel :

--author=<author>

Ignorer l'auteur du commit. Spécifiez un auteur explicite à l'aide de la norme A U Thor <[email protected]> _ format. Autrement <author> est supposé être un motif et est utilisé pour rechercher une validation existante par cet auteur (c.-à-d. rev-list --all -i --author=<author>); l'auteur de la validation est alors copié à partir de la première validation trouvée.

136
Tim Henigan

Pour ajouter à cela: L'option --author Mentionnée dans la réponse acceptée ne remplacera que le auteur, pas le committer informations du commit .

C’est le comportement correct dans la plupart des cas, mais si, pour une raison quelconque, vous devez également remplacer manuellement les informations du commetteur , utilisez le paramètre GIT_COMMITTER_NAME et GIT_COMMITTER_EMAIL variables d’environnement (il existe également un GIT_COMMITTER_DATE). Voir Variables Git-Internals-Environment-Variables

$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="[email protected]" git commit --author="New Name <[email protected]>"

Cela donnera l'impression que la validation a été créée et par l'utilisateur spécifié.

92
friederbluemle