Sto vedendo questo su questo repository GitHub :
Cosa significa questo? Come può qualcosa essere "creato 7 giorni fa" e tuttavia "commesso 14 ore fa"?
commit --date=
. Schwern lo spiega molto bene.
Sto vedendo questo su questo repository GitHub :
Cosa significa questo? Come può qualcosa essere "creato 7 giorni fa" e tuttavia "commesso 14 ore fa"?
commit --date=
. Schwern lo spiega molto bene.
Risposte:
Git ha un concetto separato dell'autore (la persona che ha scritto il codice) e del committer (la persona che lo ha impegnato nel repository). Allo stesso modo ci possono essere date diverse per entrambi. Di solito sono uguali.
Vorresti che fossero diversi principalmente se la persona che scriveva il codice o inviava la patch non ha accesso push al repository come nei progetti che usano mailing list per l'invio di patch. In questo caso, la persona con accesso push applica la patch ed esegue git commit
con gli switch --author
e--date
o usando le variabili di ambiente GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL e GIT_AUTHOR_DATE (documentate in git-commit-tree .
L'altro caso sta usando git cherry-pick
o git rebase. Il committer è la persona che effettua la scelta della ciliegia e l'autore è l'autore del commit originale. Git gestirà l'impostazione dell'identità e della data dell'autore per te.
Puoi vedere queste informazioni nel repository 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
causa anche l'aggiornamento della data di commit mentre la data dell'autore rimane la stessa.
Sembra un mix tra il modo in cui Git funziona con le date e il modo in cui è stato referenziato con le parole chiave di chiusura di GitHub .
Git separa tra date di commit e date dell'autore. In Pro Git vanno un po 'nella differenza :
L'autore è la persona che ha originariamente scritto l'opera, mentre il committer è la persona che ha applicato per l'ultima volta l'opera. Quindi, se invii una patch a un progetto e uno dei membri principali applica la patch, entrambi ottieni credito: tu come autore e il membro principale come committer.
Quindi, mentre il codice stesso è stato eseguito il commit / scritto "7 giorni fa" (localmente), non è stato "applicato" o corretto al codice fino a "14 ore fa", dal momento che non è stato visto nel telecomando fino a quel riferimento chiuso Messaggio.