Kaip pakeisti kelis įsipareigojimus git keisti autorių

Aš padariau eilę įsipareigojimų Git'e, ir dabar suprantu, kad pamiršote teisingai įvesti el. Pašto vartotojo vardą ir naudotojo vardą (naują mašiną). Aš dar neužstojau šių įsipareigojimų mano saugyklai, taigi, kaip galiu išspręsti šiuos įsipareigojimus prieš tai, kai tai darau (tik paskutiniai 3 įsipareigoja pagrindiniame filiale)?

git commit -C <id> --reset-author git reset ir „ git commit -C <id> --reset-author , bet nemanau, kad esu teisingame kelyje.

88
13 февр. pauldoo yra nustatytas vasario 13 d 2011-02-13 01:48 '11 prie 1:48 2011-02-13 01:48
@ 5 atsakymai

Perkėlimas / keitimas atrodo neveiksmingas, kai turite filtravimo šakos galią:

 git filter-branch --env-filter 'if [ "$GIT_AUTHOR_EMAIL" = "incorrect@email" ]; then GIT_AUTHOR_EMAIL=correct@email; GIT_AUTHOR_NAME="Correct Name"; GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL; GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; fi' -- --all 

(padalinti stygos, kad būtų aiškiau, bet nereikalaujama)

Būtinai patikrinkite rezultatus, kai baigsite, kad įsitikintumėte, jog nieko nepakeitėte, ko nenorėjote!

104
13 февр. Atsakymą pateikė Jefromi vasario 13 d. 2011-02-13 06:33 '11 at 6:33 am 2011-02-13 06:33

Interaktyvus požiūris į peradresavimą yra gana geras, kai naudojamas kartu su exec. Galite paleisti bet kokią korpuso komandą prieš tam tikrą įsipareigojimą arba visus įsipareigojimus perkelti.

Pirmiausia nustatykite git autoriaus nustatymus

 git config --global user.name "John Doe" git config --global user.email johndoe@example.com 

Tada, kol bus atkurta, autorius visiems nustato po tam tikros SHA

border=0
 git rebase -i YOUR_SHA -x "git commit --amend --reset-author -CHEAD" 

Tai patvirtins redaktorių, kad patvirtintumėte pakeitimus. Viskas, ką jums reikia padaryti, yra išsaugoti ir išeiti, ir ji bus vykdoma per kiekvieną įvykį ir paleiskite komandą, nurodytą -x vėliavose.

Toliau pateiktoje „@Dave“ pastaboje taip pat galite keisti autorių, išlaikant originalius laiko žymų su:

 git rebase -i YOUR_SHA -x "git commit --amend --author 'New Name <new_address@example.com>' -CHEAD" 
68
12 сент. atsakymas Alexui 12 sep. 2014-09-12 22:05 '14, 10:05 pm 2014-09-12 22:05

Norėdami pakeisti autorių tik paskutiniam įvykiui:

 git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit 

Tarkime, kad norite pakeisti autorių tik paskutiniams N:

 git rebase -i HEAD~4 -x "git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit" 

PASTABOS

  • --no-edit vėliava užtikrina, kad git commit --amend neprašo papildomo patvirtinimo
  • kai naudojate git rebase -i , galite rankiniu būdu pasirinkti įsipareigojimus, kur galite pakeisti autorių,

failas, kurį redaguojate, atrodys taip:

 pick 897fe9e simplify code a little pick abb60f9 add new feature exec git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit pick dc18f70 bugfix 
34
28 июля '15 в 10:19 2015-07-28 10:19 Atsakymą pateikė Chrisas Maesas liepos 28 d. 15, 10:19 2015-07-28 10:19

Manau, kad ieškote git rebase --interactive

Jis leidžia jums grįžti prie konkretaus įvykio, o tada pereiti prie pridedamų ar grupuojančių įvykių istorijos keitimo

Čia jūs turite paaiškinimą http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive

3
13 февр. Atsakymą pateikė Fernando Diaz Garrido vasario 13 d. 2011-02-13 02:16 '11 at 2:16 2011-02-13 02:16

Jei jaučiatės nesaugu dėl atsisakymo ir pataisymų, galite tai padaryti. Tuo pačiu metu jūs taip pat nustatysite pasaulinę konfigūraciją, kurią tikriausiai norėtumėte padaryti bet kuriuo atveju.

git reset HEAD~ (atšaukti paskutinį įvykį)

git config --global user.name "Your Name"

git config --global user.email you@example.com

git commit -m "message"

0
13 окт. atsakymas duotas tymac spalis 13. 2017-10-13 06:21 '17 6:21 am 2017-10-13 06:21

Kiti klausimai apie žymes arba Ask a Question