Estou vendo isso neste repositório GitHub :
O que isto significa? Como algo pode ser "criado há 7 dias" e ainda "comprometido há 14 horas"?
commit --date=
. Schwern explica isso muito bem.
Estou vendo isso neste repositório GitHub :
O que isto significa? Como algo pode ser "criado há 7 dias" e ainda "comprometido há 14 horas"?
commit --date=
. Schwern explica isso muito bem.
Respostas:
O Git tem um conceito separado do autor (a pessoa que escreveu o código) e o committer (a pessoa que o submeteu ao repositório). Da mesma forma, pode haver datas diferentes para ambos. Eles geralmente são os mesmos.
Você gostaria que eles fossem diferentes principalmente se a pessoa que escrever o código ou enviar o patch não tiver acesso por push ao repositório como nos projetos que usam listas de discussão para envio de patches. Neste caso, a pessoa com acesso impulso iria aplicar o patch e correr git commit
tanto com os --author
e --date
interruptores ou usando as variáveis de ambiente GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL e GIT_AUTHOR_DATE (documentado em git-commit-árvore .
O outro caso é usando git cherry-pick
ou git rebase. O committer é a pessoa que faz a escolha da cereja e o autor é o autor do commit original. O Git cuidará da configuração da identidade e data do autor para você.
Você pode ver essas informações no repositório com 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
também faz com que a data de confirmação seja atualizada enquanto a data do autor permanece a mesma.
Parece uma mistura entre como o Git funciona com datas e como foi referenciado com as palavras-chave de fechamento do GitHub .
Git separa entre datas de confirmação e autor. No Pro Git, eles entram um pouco na diferença :
O autor é a pessoa que originalmente escreveu o trabalho, enquanto o autor é a pessoa que aplicou o trabalho pela última vez. Portanto, se você enviar um patch para um projeto e um dos membros principais aplicá-lo, os dois receberão crédito - você como autor e o membro principal como committer.
Portanto, enquanto o código em si foi confirmado / gravado "7 dias atrás" (localmente), ele não foi "aplicado" ou corrigido no código até "14 horas atrás", pois não foi visto no controle remoto até o fechamento referenciado mensagem.