Eu procuro meus logs git e descubro que AuthorDate e CommitDate são ligeiramente diferentes para alguns de meus commits:
commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author: <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit: <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800
O autor e o compromisso são o mesmo eu.
Como isso acontece? Estou confuso há dias.
Há mais (acontece em 17 de 341 commits):
+------------------------------+-------------------------------+
| from_unixtime(authored_date) | from_unixtime(committed_date) |
+------------------------------+-------------------------------+
| 2012-06-15 10:57:22 | 2012-06-15 11:14:37 |
| 2012-06-15 14:39:54 | 2012-06-15 14:48:57 |
| 2012-06-19 12:28:21 | 2012-06-19 12:29:41 |
| 2012-06-21 18:16:25 | 2012-06-21 18:28:48 |
| 2012-06-26 17:30:54 | 2012-06-26 17:33:55 |
| 2012-07-13 11:41:43 | 2012-07-13 11:42:17 |
| 2012-07-13 11:56:02 | 2012-07-13 12:13:22 |
| 2012-07-13 12:05:09 | 2012-07-13 12:12:24 |
| 2012-07-12 18:38:49 | 2012-07-13 12:26:35 |
| 2012-07-13 11:00:47 | 2012-07-13 12:25:15 |
| 2012-07-16 14:10:54 | 2012-07-16 14:15:01 |
| 2012-07-13 12:56:51 | 2012-07-16 13:49:48 |
| 2012-07-16 14:10:54 | 2012-07-16 14:19:46 |
| 2012-07-24 16:05:05 | 2012-07-24 16:05:48 |
| 2012-07-24 17:42:58 | 2012-07-24 17:43:33 |
| 2012-07-24 17:42:58 | 2012-07-24 17:45:18 |
| 2012-07-26 16:55:40 | 2012-07-26 16:55:53 |
+------------------------------+-------------------------------+
git log
por padrão, mostra apenas a data de confirmação do Autor. Mas se você usar--since
,--until
,--before
,--after
, datas relativas, usos git o Committer data comprometer em vez disso!git log --since="yesterday"
pode não mostrar os resultados esperados se a data de confirmação do Autor for diferente da data de confirmação do Committer .git --squash merge
é uma estratégia de mesclagem um tanto comum que pode ser configurada (embora não pareça que esteja sendo usada aqui, ela foi criada para fins de exemplo). Além disso, se o git estiver sendo usado por meio de um IDE ou GUI do git, há a possibilidade de configuração / funcionalidade não presente na CLI. Pode valer a pena verificarRespostas:
A data do autor indica quando este commit foi feito originalmente (ou seja, quando você terminou o
git commit
). De acordo com os documentos degit commit
, a data do autor pode ser substituída usando a--date
opção.A data do commit é alterada toda vez que o commit está sendo modificado, por exemplo, ao rebasar o branch onde o commit está em outro branch ( mais ).
O mesmo pode acontecer se você fizer seu commit e enviar seu patch para outro a fim de aplicar o patch em outro repo: a data do autor será a data do seu
git commit
, a data de commit será definida para aquela data quando o patch for aplicado em o outro repo.Se você enviar o patch para dois colegas, haverá uma data de autor, mas duas datas de confirmação diferentes.
Isso também é mencionado no livro Git :
fonte
git show -s --format="commit %cD author %aD" HEAD
, pareceria que, por exemplo, alterar a mensagem de commit comgit gui
atualizações de ambos, masgit commit --amend
apenas atualiza a data do committer. não intuitivo.A data do autor em um commit é preservada no rebase / escolha aleatória, etc. Mas a data de commit é alterada.
fonte
git commit --amend
.