2016-05-16 4 views

risposta

64

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.

+2

C'è anche 'git commit --author = ' che sovrascrive l'autore del commit. Alcune GUI come PhpStorm di Jetbrains consentono l'opzione dalla finestra di commit; spesso viene fornito con un menu a discesa con completamento automatico che può essere colpito per sbaglio prima di inviare il modulo di commit. –

8

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.

+4

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

0

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.