GIT: cambiar date de compromiso a date de autor

¿Es posible cambiar la date de compromiso de mi compromiso a la date del autor?

He adaptado algunos commits y ahora las dates son todas iguales. Quiero volver a establecer las dates anteriores (o las dates del autor). es posible?

Estoy usando Sourcetree así que tengo la command-line de git, pero no soy un profesional en eso. Mi repository externo es bitbucket.

Desde git 1.6.3 git rebase tiene --committer-date-is-author-date para este propósito.

 git rebase --committer-date-is-author-date 

Respuesta original:
No hay una manera fácil de establecer las dates de committer (editar: pero ver "editar 2" a continuación). Las dates de autor son fáciles de ajustar (en el momento de la confirmación), ya que --date le permitirá especificar cada una de ellas a medida que --date .

La variable de entorno GIT_COMMITTER_DATE se puede usar para forzar una timestamp diferente en el momento en que realiza la confirmación. Sin embargo, tenga en count que deberá ajustar esto para cada confirmación que "reproduzca". La nueva confirmación resultante tendrá un SHA-1 diferente (porque ha cambiado algunos bits en él, es decir, el campo de date del confirmador), lo que significa que debe volver a hacer todos sus commits descendentes.

Esto es lo que hace git filter-branch (recrear algunas, muchas o todas las confirmaciones con cambios realizados a lo largo del path, manteniendo un mapeo de antiguos identificadores SHA-1 a nuevos identificadores SHA-1 y ajustando los padres de incluso -de lo contrario- las copys de commit sin tocar para que el "nuevo" DAG de los nuevos ID de SHA-1 coincida con el "viejo" DAG de todas las maneras posibles, es decir, en todos los sentidos, excepto en SHA-1 ID y cualquier otro cambio realizado por su (s) filter (s) .

En otras palabras, para hacer esto, debe usar git filter-branch para reescribir el historial, con todo lo que esto implica. [Editar: literalmente puedes hacerlo sin git filter-branch , por ejemplo, al hacerlo en git rebase -i , pero el efecto es el mismo.]

Editar 2 : como se indica en un comentario (ya que se eliminó), git rebase tiene --committer-date-is-author-date para este fin. Todavía hace la misma reescritura de la historia, pero es mucho más conveniente que hacerlo con el command raw git filter-branch .

 git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'