Lisää
Miten vaihtaa yhden tietyn toimituksen tekijä?
Haluan vaihtaa yhden tietyn toimituksen tekijän historiassa. Se ei ole viimeinen toimitus.
Tiedän tästä kysymyksestä - Miten vaihdan commitin tekijän gitissä?.
Mutta ajattelen jotain, jossa tunnistan commitin hashin tai short-hashin avulla.
1928
3
Interaktiivinen uudelleenkäyttö aikaisemmasta kohdasta historiassa kuin se komitoitus, jota haluat muuttaa (
git rebase -i
). Vaihda uudelleenperustettavien komitusten luettelossa sen komituksen, jota haluat muuttaa, hashin vieressä oleva tekstipick
:stäedit
:ksi. Sitten kun git pyytää sinua muuttamaan toimitusta, käytä tätä:Jos esimerkiksi komentohistoriasi on
A-B-C-D-E-F
, jossaF
onHEAD
, ja haluat vaihtaaC
:n jaD
:n kirjoittajan, niin...git rebase -i B
(tässä on esimerkki siitä, mitä näet komennongit rebase -i B
suorittamisen jälkeen).A
:ta, käytägit rebase -i --root
.C
:n ettäD
:n rivitpick
:stäedit
:ksi.C
.git commit --amend --author="Author Name "
git rebase --continue
.D
.git commit --amend --author="Author Name "
uudelleengit rebase --continue
git push -f
päivittääksesi origon päivitetyillä komennoilla.Linkittämäsi kysymyksen vastaukset ovat hyviä vastauksia ja kattavat tilanteesi (toinen kysymys on yleisempi, koska siihen liittyy useiden komentojen uudelleenkirjoittaminen).
Tekosyynä kokeillakseni
git filter-branchia
kirjoitin skriptin, joka kirjoittaa uudelleen tekijän nimen ja/tai tekijän sähköpostin tietylle toimitukselle:Kun teet
git rebase -i
, dokumentissa on tämä mielenkiintoinen kohta:A-B-C-D-E-F
,B
jaD
(= 2 kommittiä),voit tehdä näin:
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^
valitseeB
:n vanhemman.pick
tilallesquash
.Esimerkki siitä, mitä
git rebase -i B^
antaa sinulle:muuta se seuraavasti:
Se pyytää sinua muokkaamaan viestejä:
ja voit vain poistaa muutaman ensimmäisen rivin.