Paano baguhin ang may-akda ng isang pasya para sa isang partikular na gumawa?

Gusto kong baguhin ang may-akda ng isang partikular na gumawa sa kasaysayan. Hindi ito ang huling gumawa.

Alam ko ang tungkol sa tanong na ito - paano ko mababago ang may-akda ng isang gumawa sa git?

Ngunit iniisip ko ang isang bagay kung saan nakilala ko ang isang gumawa ng hash o maikling hash.

1564
15 июня '10 в 7:00 2010-06-15 07:00 Itakda ang MicTech Hunyo 15 '10 sa 7:00 2010-06-15 07:00
@ 9 sagot

Interactive rebase mula sa isang punto mas maaga sa kasaysayan kaysa sa gumawa ng kai>git rebase -i <earliercommit> ). Sa listahan ng mga gumagawa na na-relocated, baguhin ang teksto mula sa pick upang i- edit tabi ng hash ng isang nais mong baguhin. Pagkatapos, kapag ang git ay nagpapahiwatig sa iyo na baguhin ang gumawa, gamitin ito:

 git commit --amend --author="Author Name <email@address.com>" 

Halimbawa, kung ang iyong ABCDE-f gumawa ng kasaysayan sa F HEAD , at gusto mong baguhin ang may-akda ng C at D , pagkatapos ay gusto mo ...

  1. Tukuyin ang git rebase -i B ( narito ang isang halimbawa ng kung ano ang makikita mo pagkatapos maisagawa ang git rebase -i B utos )
    • kung kai>A , gamitin ang git rebase -i --root
  2. baguhin ang mga linya para sa C at D mula sa pick upang i- edit
  3. Sa sandaling magsimula ang rebase, siya ay unang titigil sa C
  4. Dapat kang gumawa git commit --amend --author="Author Name <email@address.com>"
  5. Pagkatapos git rebase --continue
  6. Ito ay muling titigil sa D
  7. Pagkatapos ay dapat na muli kang git commit --amend --author="Author Name <email@address.com>"
  8. git rebase --continue
  9. Natapos na ang paglilipat.
  10. Gamitin ang git push -f upang i-update ang iyong pinagmulan na may na-update na mga commits.
2672
15 июня '10 в 7:31 2010-06-15 07:31 ang sagot ay ibinigay Amber Hunyo 15 '10 sa 7:31 2010-06-15 07:31

Ang tinanggap na sagot sa tanong na ito ay ang nakakagulat na matalino na paggamit ng interactive relocation, ngunit sa kasamaang palad ay nagiging sanhi ito ng mga kontrahan, kung ang may-akda na sinusubukang baguhin ay ginamit ng may-akda para sa sangay na pinagsama. Sa mas pangkalahatang kaso, hindi ito gumagana kapag nagpoproseso ng mga maruming kuwento.

Dahil natatakot ako sa pagpapatakbo ng mga script na umaasa sa pagtatakda at pagtatanggal ng mga variable sa kapaligiran upang i-overwrite ang git history, sumulat ako ng bagong sagot batay sa post na ito, na katulad ng sagot na ito, ngunit mas kumpleto.

Ang mga sumusunod ay sinubok at gumagana, sa kaibahan sa kaugnay na tugon. Ipagpalagay na para sa kaliwanagan, na 03f482d6 ay isang gumawa, ang may-akda na sinusubukan naming palitan, at 42627abe ay isang gumawa sa isang bagong may-akda.

border=0
  1. Magsagawa ng isang bagay na sinusubukan naming baguhin.

     git checkout 03f482d6 
  2. Gawing baguhin ang may-akda.

     git commit --amend --author "New Author Name <New Author Email>" 

    Ngayon kami ay may isang bagong gumawa na may isang hash katumbas ng 42627abe .

  3. Tingnan ang orihinal na sangay.

  4. Palitan ang lumang commit sa isang bagong lokal.

     git replace 03f482d6 42627abe 
  5. Isulat muli ang lahat ng mga hinaharap na gawain batay sa kapalit.

     git filter-branch -- --all 
  6. Alisin ang kapalit para sa kalinisan.

     git replace -d 03f482d6 
  7. Mag-click sa bagong kasaysayan (gamitin lamang --force kung nabigo ang mga sumusunod, at pagkatapos lamang tiyakin ang pag-andar sa git log at / o git diff ).

     git push --force-with-lease 

Sa halip na 4-6, maaari ka lamang lumipat sa bagong gumawa:

 git rebase -i 42627abe 
369
04 марта '15 в 5:11 2015-03-04 05:11 ang sagot ay ibinigay merlin2011 Marso 04 '15 sa 5:11 2015-03-04 05:11
09 июня '15 в 19:02 2015-06-09 19:02 Ang sagot ay ibinigay ng olivieradam666 Hunyo 09 '15 sa 19:02 2015-06-09 19:02
  • I-reset ang iyong email address sa configuration:

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

  • Ngayon ay i-reset ang may-akda ng iyong gumawa nang wa>

    git commit --amend --reset-author --no-edit

82
05 апр. ang sagot ay ibinigay pravbeatle 05 Abr 2017-04-05 15:44 '17 sa 3:44 ng hapon 2017-04-05 15:44

Maaari mong baguhin ang may-akda ng huling gumawa gamit ang utos sa ibaba.

git commit --amend --author="Author Name <email@address.com>"

Gayunpaman, kung nais mong baguhin ang higit sa isang pangalan ng may-akda, ito ay isang maliit na mahirap. Kai>

Simulan ang rebooting na may git rebase -i . Ipapakita niya sa iyo ang isang bagay tulad nito.

Baguhin ang pick keyword upang i- edit para sa mga gumawa na gusto mong baguhin ang pangalan ng may-akda.

Pagkatapos isara ang editor. Para sa mga newbies, pindutin ang Escape , pagkatapos i-type ang :wq at pindutin ang Enter .

Pagkatapos ay makikita mo ang iyong terminal na parang wa>git rebase --continue . Ulitin ang parehong para sa halaga ng pag-aayos na nais mong i-edit. Maaari mo bang tiyakin na natapos ang interactive na buod kapag natanggap mo ang mensahe No rebase in progress? .

69
29 авг. ang sagot ay ibinigay ng Fatih 29 aug. 2015-08-29 03:52 '15 sa 3:52 2015-08-29 03:52

Ang mga sagot sa tanong na kung saan ikaw ay konektado ay magandang mga sagot at takpan ang iyong sitwasyon (isa pang tanong ay mas pangkalahatan, sapagkat ito ay nagsasangkot ng muling pagsusulat ng maraming mga gumawa).

Bi>git filter-branch sumulat ako ng isang script na isulat muli ang pangalan ng may-akda at / o email ng may-akda para sa komit na ito:

15 июня '10 в 8:24 2010-06-15 08:24 Sumagot na ibinigay ni Chris Johnsen noong Hunyo 15 '10 sa 8:24 2010-06-15 08:24

Kapag tumatakbo git rebase -i may ganitong kawili-wiling bit sa dokumento:

Kung gusto mong i-reset ang dalawa o higit pang mga gumawa sa isa, palitan ang "pick" utos na may pangalawang at kasunod na gumawa ng "squash" o "fixup" . Kung ang mga gumawa ay may iba't ibang mga may-akda, ang nakatiklop na tagaayos ay maiuugnay sa may-akda ng unang gumawa. Ang iminungkahing mensaheng gumawa para sa isang nakatiklop na gumawa ay isang pagsasama ng mga mensahe ng gumawa ng unang gumawa at mga utos sa command "squash" , ngunit nililimitahan ang mga commit commit messages sa "fixup" .

  • Kung mayroon kang kasaysayan ABCDEF ,
  • at gusto mong baguhin ang gumawa ng B at D (= 2 commits),

pagkatapos ay maaari mong gawin:

  • git config user.name "Correct new name"
  • git config user.email "correct@new.email"
  • gumawa ng mga wa>
  • kai>
  • git commit --allow-empty -m "empty"
  • simulan ang reboot operation
    • git rebase -i B^
    • B^ pinipili ang parent element B
  • kai>bago para sa bawat gumawa na baguhin
  • Kai>pick sa squash para sa kanila.
  • Isang halimbawa ng kung ano ang git rebase -i B^ ay magbibigay sa iyo:

     pick sha-commit-B some message pick sha-commit-C some message pick sha-commit-D some message pick sha-commit-E some message pick sha-commit-F some message # pick sha-commit-empty1 empty # pick sha-commit-empty2 empty 

    baguhin ito sa:

     # change commit B author pick sha-commit-empty1 empty squash sha-commit-B some message # leave commit C alone pick sha-commit-C some message # change commit D author pick sha-commit-empty2 empty squash sha-commit-D some message # leave commit EF alone pick sha-commit-E some message pick sha-commit-F some message 

    Hinihiling niya sa iyo na i-edit ang mga mensahe:

     # This is a combination of 2 commits. # The first commit message is: empty # This is the 2nd commit message: ...some useful commit message there... 

    at maaari mo >

    12
    28 авг. ang sagot ay ibinigay dnozay 28 aug. 2013-08-28 04:03 '13 sa 4:03 2013-08-28 04:03

    May isa pang hakbang sa sagot ng Amber kung gumagamit ka ng gitnang repository:

    git push -f upang pilitin ang isang central repository upang i-update.

    Mag-ingat na huwag magkaroon ng maraming tao sa isang sangay, sapagkat ito ay maaaring humantong sa pagkawala ng pagbabago.

    11
    20 дек. Ang sagot ay ibinigay ng Fabian76 20 Disyembre. 2013-12-20 18:06 '13 sa 18:06 2013-12-20 18:06

    Iba pang mga katanungan tungkol sa tags o Magtanong ng isang Tanong