Vairāk
Kā nomainīt kopijas autoru vienai konkrētai kopijai?
Vēlos mainīt viena konkrēta ieraksta autoru vēsturē. Tas nav pēdējais ieraksts.
Es zinu par šo jautājumu - Kā es varu mainīt autoru git sistēmā?.
Bet es domāju par kaut ko tādu, kur es identificēju commit pēc hash vai short-hash.
1928
3
Interaktīvā pārbāze no agrākā vēstures punkta, kas ir agrāks par to, kuru vēlaties mainīt (
git rebase -i
). Pārbāzēto nodevumu sarakstā mainiet tekstu nopick
uzedit
blakus tā nodevuma hash, kuru vēlaties modificēt. Tad, kad git lūgs mainīt nodevumu, izmantojiet šo:Piemēram, ja jūsu izmaiņu vēsture ir
A-B-C-D-E-F
arF
kāHEAD
, un jūs vēlaties mainītC
unD
autoru, tad jūs...git rebase -i B
(šeit ir piemērs tam, ko redzēsiet pēc komandasgit rebase -i B
izpildīšanas).A
, izmantojietgit rebase -i --root
.C
unD
rindas nopick
uzedit
.C
.git commit --amend --author="Autora vārds "
git rebase --continue
D
git commit --amend --author="Author Name "
.git rebase --continue
git push -f
, lai atjauninātu savu oriģinālvalsti ar atjauninātajām nodevām.Atbildes uz jautājumu, uz kuru jūs atsaucāties, ir labas atbildes un attiecas uz jūsu situāciju (otrs jautājums ir vispārīgāks, jo tas ietver vairāku nodevumu pārrakstīšanu).
Lai izmēģinātu
git filter-branch
, es uzrakstīju skriptu, lai pārrakstītu autora vārdu un/vai e-pasta adresi konkrētai kopijai:Veicot
git rebase -i
, dokumentācijā ir šis interesantais teksts:A-B-C-D-E-F
vēsture,B
unD
(= 2 nodevumi),tad varat veikt:
git config user.name "Correct new name"
git config user.email "correct@new.email"
git commit --allow-empty -m "empty"
git rebase -i B^
B^
atlasaB
vecāku.pick
uzsquash
.Piemērs, ko
git rebase -i B^
jums dos:mainiet to uz:
Jums tiks piedāvāts rediģēt ziņojumus:
un jūs varat vienkārši izdzēst dažas pirmās rindiņas.