Sono interessato a sapere quale dei due utenti ha modificato il file quando github li elenca entrambi. Tuttavia, il record git contiene solo UserA.Cosa significa UserA commit con UtenteB 13 giorni fa su github?
risposta
UtenteA è quello che ha apportato le modifiche. UtenteB è colui che ha commesso tali modifiche in questo ramo. se l'utente accetta le sue modifiche a branch1, UtenteB arriva, commette un paio di modifiche a branch2, rebases branch1 con branch2. Ora, il commit più in alto nel ramo1 mostrerà che UtenteA ha commesso queste modifiche con UtenteB.
Modifica: Questo accade principalmente durante la re-suddivisione e la selezione delle ciliegie, poiché gli autori e i committer possono essere diversi in questi processi.
C'è anche 'git commit --author =
La risposta di @ venkatKA è accurata e descrittiva, ma ho pensato di aggiungere alcuni dettagli.
git cat-file -p HEAD
può essere utilizzato per stampare le informazioni sulla commettere
tree d85ed3c3a055c95445898a5119ea0a532459fdsf
parent 0b6ed951b2c04b4134c91ffa053b4330edfdffc1
author AuthA <[email protected]> 1487356245 +0000
committer AutbB <[email protected]> 1487356245 +0000
Se si vuole risolvere committer storiche (per esempio se si sta modificando la propria identità), allora si può usare:
git filter-branch -f --tree-filter "GIT_COMMITTER_NAME='New Author'; GIT_COMMITTER_EMAIL='New Author'"
Si applicano i commenti standard sulle rotture delle interruzioni della cronologia e sul perché il revisionismo sia una cattiva idea.
Puoi anche 'git show --format = full' o' git show --format = fuller' (o usa gli stessi argomenti '--format' con' git log') per visualizzare sia l'autore che il committer. – torek
Un'altra delle possibili ragioni dietro questo evento è utilizzando le variabili di env $GIT_AUTHOR_NAME
e $GIT_AUTHOR_EMAIL
.
Quando queste variabili sono impostate, sovrascrivono la parte autore di ogni commit successivo indipendentemente dai valori di configurazione user.name
e user.email
impostati localmente. In questo caso, quando si preme git cat-file -p HEAD
, l'autore mostra il valore di $GIT_AUTHOR_NAME
e il committer mostra il valore della configurazione locale user.name
.
Quindi è necessario rimuovere le linee che esportano queste variabili in .bashrc
o .zshrc
, o se si desidera mantenere quelle linee, ma semplicemente non vogliono questa cosa accada, inserire unset GIT_AUTHOR_NAME && unset GIT_AUTHOR_EMAIL
prima di eseguire git commit.
Sei sicuro che il "record git" non include sia Utente sia UtenteB? È possibile avere valori diversi per "Committer" e "Author". – Thilo