Więcej
Jak zmienić autora commitów dla jednego konkretnego commitu?
Chcę zmienić autora jednego konkretnego commitu w historii. Nie jest to ostatni commit.
Wiem o tym pytaniu - Jak zmienić autora commitu w git?.
Ale zastanawiam się nad czymś, gdzie identyfikuję commit przez hash lub short-hash.
1928
3
Interaktywny rebase z punktu wcześniejszego w historii niż commit, który chcesz zmodyfikować (
git rebase -i
). Na liście commitów poddawanych rebase, zmień tekst zpick
naedit
obok hasha tego, który chcesz zmodyfikować. Następnie, gdy git poprosi cię o zmianę commitu, użyj tego:Na przykład, jeśli twoja historia commitów to
A-B-C-D-E-F
zF
jakoHEAD
, a ty chcesz zmienić autoraC
iD
, to...git rebase -i B
(tutaj jest przykład tego co zobaczysz po wykonaniu komendygit rebase -i B
)A
, użyjgit rebase -i --root
.C
iD
zpick
naedit
.C
.git commit --amend --author="Author Name "
.git rebase --continue
.D
.git commit --amend --author="Author Name "
ponownie.git rebase --continue
.git push -f
, aby zaktualizować swój origin o zaktualizowane commity.Odpowiedzi w pytaniu, do którego się odniosłeś, są dobre i obejmują twoją sytuację (inne pytanie jest bardziej ogólne, ponieważ obejmuje przepisywanie wielu commitów).
Jako pretekst do wypróbowania
git filter-branch
, napisałem skrypt do przepisywania Author Name i / lub Author Email dla danego commitu:Podczas wykonywania
git rebase -i
jest ten interesujący fragment w doc:A-B-C-D-E-F
,B
iD
(= 2 commity),to możesz zrobić:
git config user.name "Popraw nową nazwę"
.git config user.email "correct@new.email"
.git commit --allow-empty -m "empty"
.git rebase -i B^
B^
wybiera rodzicaB
.pick
nasquash
dla tych.Przykład tego co da ci
git rebase -i B^
:zmień to na:
Zostaniesz poproszony o edycję wiadomości:
i możesz po prostu usunąć kilka pierwszych linii.