Estoy viendo esto en este repositorio de GitHub :
¿Qué significa esto? ¿Cómo puede algo ser "creado hace 7 días" y, sin embargo, "comprometido hace 14 horas"?
commit --date=
. Schwern lo explica muy bien.
Estoy viendo esto en este repositorio de GitHub :
¿Qué significa esto? ¿Cómo puede algo ser "creado hace 7 días" y, sin embargo, "comprometido hace 14 horas"?
commit --date=
. Schwern lo explica muy bien.
Respuestas:
Git tiene un concepto separado del autor (la persona que escribió el código) y el confirmador (la persona que lo comprometió en el repositorio). Del mismo modo, puede haber diferentes fechas para ambos. Suelen ser lo mismo.
Desearía que fueran diferentes principalmente si la persona que escribe el código o envía el parche no tiene acceso directo al repositorio como en los proyectos que usan listas de correo para enviar parches. En este caso, la persona con acceso push aplicaría el parche y se ejecutaría git commit
con los modificadores --author
y--date
o utilizando las variables de entorno GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL y GIT_AUTHOR_DATE (documentado en git-commit-tree .
El otro caso está usando git cherry-pick
o git rebase. El responsable es la persona que realiza la selección de cereza, y el autor es el autor del compromiso original. Git se encargará de configurar la identidad del autor y la fecha para usted.
Puede ver esta información en el repositorio con git log --pretty=fuller
.
commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author: thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit: Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200
open repository url if confirmed, closes #1
git rebase
también hace que la fecha de confirmación se actualice mientras que la fecha del autor sigue siendo la misma.
Esto parece una mezcla entre cómo funciona Git con las fechas y cómo se hizo referencia con las palabras clave de cierre de GitHub .
Git separa entre las fechas de confirmación y autor. En Pro Git entran un poco en la diferencia :
El autor es la persona que originalmente escribió el trabajo, mientras que el responsable es la última persona que aplicó el trabajo. Por lo tanto, si envía un parche a un proyecto y uno de los miembros principales aplica el parche, ambos obtendrán crédito: usted como autor y el miembro principal como responsable.
Por lo tanto, aunque el código en sí fue confirmado / escrito "hace 7 días" (localmente), no fue "aplicado" o parcheado al código hasta "hace 14 horas", ya que no se vio en el control remoto hasta que se hizo referencia al cierre mensaje.