Paano baguhin ang mga umiiral na, unpushed gumawa?

Sinulat ko ang maling bagay sa mensahe ng gumawa. Gayundin, nakalimutan ko na isama ang i>

Paano baguhin ang mga mensahe / file na gumawa? Ang commit ay hindi pa nagsimula.

7676
07 окт. itinakda ni Laurie Young 07 Oktubre 2008-10-07 18:44 '08 sa 18:44 2008-10-07 18:44
@ 27 sagot

Mga pagbabago sa pinakahuling mensahe ng gumawa

 git commit --amend -m "New commit message" 

... Gayunpaman, maaaring gumawa ito ng mga mensahe ng multi-line na gumawa o mas maliit na mga pagwawasto na mas mahirap ipasok.

Bago mo gawin ito, siguraduhin na wala kang mga pagbabago sa kopya ng pagtatrabaho, kung hindi man ay maayos. (Hindi gagawin ang mga pagbabago.)

Pagbabago ng mensahe ng gumawa na ipinadala mo na sa remote branch

Kung naitulak mo na ang iyong pangako sa isang malayong sangay, kai> mo munang itulak ang gumawa sa:

SHA ID, na lumilikha ng problema kung ang ibang mga tao ay may mga kopya ng mga lumang gumawa na muling isinulat.  Sinuman na may isang kopya ng isang lumang gumawa ay dapat na i-synchronize ang kani>

Gumamit ng interactive rebaz

Ang isa pang pagpipilian ay ang paggamit ng interactive rebase.
Pinapayagan ka nitong i-edit ang anumang mensahe na gusto mong i-update, kahit na hindi ito ang huling mensahe.

Upang gumawa ng git squash, sundin ang mga hakbang na ito:

 // X is the number of commits to the last commit you want to be able to edit git rebase -i HEAD~X 

Sa sandaling magprusuhin mo ang iyong mga gawain, piliin ang e/r upang i-edit ang mensahe.

2019

07 окт. Ang sagot ay binibigyan ng EfForEffort 07 oct. 2008-10-07 18:50 '08 at 6:50 pm 2008-10-07 18:50
2438
08 февр. Ang sagot ay ibinigay lfx_cool Pebrero 08. 2010-02-08 07:26 '10 sa 7:26 am 2010-02-08 07:26

Kung ang pag-aayos na nais mong ayusin ay hindi ang huling:

  • git rebase --interactive $parent_of_flawed_commit

    Kung nais mong ayusin ang i>

  • Ang isang editor ay lilitaw sa isang listahan ng lahat ng mga gumawa mula noong ibinigay mo ito.

    • Baguhin ang pick sa reword (o mga lumang bersyon ng Git, i- edit ) bago ang anumang pag-aayos na nais mong ayusin.
    • Pagkatapos ng pag-save, Git ay muling i-replay ang nakalistang mga gumawa.

  • Para sa bawat gumawa na nais mong gawing muli, Git ay magdadala sa iyo pabalik sa iyong editor. Para sa bawat gumawa na gusto mong baguhin, inilalagay ka ni Git sa isang shell. Kung ikaw ay nasa isang shell:

    • Baguhin ang pagkapirmi sa anumang paraan.
    • git commit --amend
    • git rebase --continue

Karamihan sa pagkakasunud-sunod na ito ay ipapaliwanag sa iyo sa pamamagitan ng output ng iba't ibang mga koponan sa go. Napakadali nito, hindi mo kai>git rebase --interactive nagbibigay-daan sa iyo upang ayusin, gaano man katagal sila.


Tandaan na hindi mo nais na baguhin ang mga pangako na pinindot mo na. O marahil ay gagawin mo, ngunit sa kasong ito kai>Paano ibalik / resynchronize pagkatapos mag-drag ang isang tao ng rebase o i-reset sa isang na-publish na thread?

2321
07 окт. ang sagot ay ibinigay ni Aristotle Pagaltzis Oktubre 07 2008-10-07 22:52 '08 at 10:52 pm 2008-10-07 22:52

Upang gumawa ng mga pagbabago sa isang nakaraang gumawa, gawin ang mga kinakai>

 git commit --amend -C HEAD 

Upang ayusin ang nakaraang ginawa, ganap na alisin ito, tumakbo

 git rebase -i HEAD~ commit_count 

(Palitan commit_count sa bi>commits gusto mong baguhin.) Ang utos na ito ay nagsisimula sa iyong editor. Markahan ang unang retainer (ang nais mong baguhin) bi>

758
16 авг. Ang sagot ay ibinigay ng Fatih 16 aug. 2011-08-16 00:20 '11 sa 0:20 2011-08-16 00:20

Tulad ng nabanggit, git commit --amend ay isang paraan upang patungan ang huling gumawa. Isang nota: kung nais mo ring i- overwrite ang mga file , ang utos ay magiging

390
07 июня '11 в 0:16 2011-06-07 00:16 ang sagot ay ibinigay ni John noong Hunyo 07 '11 sa 0:16 2011-06-07 00:16

Maaari mo ring gamitin ang git filter-branch para dito.

351
01 сент. Sumagot Markahan 01 Set 2012-09-01 23:35 '12 sa 23:35 2012-09-01 23:35

Mas gusto ko ang ganitong paraan.

 git commit --amend -c <commit ID> 

Kung hindi man, magkakaroon ng isang bagong gumawa na may bagong ID ng gumawa.

312
10 янв. Sagot na ibinigay ng krevedko Jan 10 2013-01-10 17:23 '13 sa 17:23 2013-01-10 17:23

Kung gagamitin mo ang tool ng Git GUI, mayroong isang pindutan na pinangalanang huling huling gumawa. I-click ang button na ito, at pagkatapos ay ipakita ang iyong mga pinakabagong file at mensahe ng gumawa. I-edit >

O gamitin ang command na ito mula sa console / terminal:

 git commit -a --amend -m "My new commit message" 
309
08 нояб. ang sagot ay ibinigay Akhilraj NS 08 Nobyembre. 2012-11-08 06:51 '12 sa 6:51 ng umaga 2012-11-08 06:51

Maaari mong gamitin ang git rebasing . Halimbawa, kung nais mong baguhin muli upang gumawa ng bbc643cd, patakbuhin

 $ git rebase bbc643cd^ --interactive 

Sa default na editor, palitan ang 'pick' sa 'i-edit' sa linya na nais mong baguhin. Gumawa ng mga pagbabago at pagkatapos ay ipatupad ang mga ito

 $ git add <filepattern> 

Ngayon ay maaari mong gamitin

 $ git commit --amend 

upang baguhin ang gumawa, at pagkatapos

 $ git rebase --continue 

upang bumalik sa nakaraang pagkapirmi ng kabanata.

282
22 янв. ang sagot ay ibinigay sa pamamagitan ng Shoaib Ud-Din Enero 22 2013-01-22 20:23 '13 sa 20:23 2013-01-22 20:23
  • Kung nais mong baguhin ang huling mensahe ng gumawa, sundin ang mga hakbang na ito:

     git commit --amend 

    Dadalhin ka nito sa iyong text editor at pahihintulutan kang baguhin ang huling mensahe ng gumawa.

  • Kung nais mong baguhin ang huling 3 gumawa ng mga mensahe o anumang mga mensahe ng gumawa sa puntong ito, ilagay ang HEAD~3 sa git rebase -i :

     git rebase -i HEAD~3 
275
22 окт. sagot na ibinigay ni Heena Hussain Oktubre 22 2012-10-22 14:22 '12 sa 2:22 pm 2012-10-22 14:22

Kung kai>

256
15 нояб. Ang sagot ay ibinigay ng sebers Nobyembre 15. 2012-11-15 12:29 '12 sa 12:29 2012-11-15 12:29

paggamit ng

 git commit --amend 

Upang maunawaan ito nang detalyado, ang isang mahusay na post ay 4. I-overwrite ang kasaysayan ng Git . Sinasabi rin nito sa iyo kung hindi gumamit ng git commit --amend .

221
27 марта '13 в 23:43 2013-03-27 23:43 ang sagot ay binibigyan ng balat Marso 27 '13 sa 23:43 2013-03-27 23:43

Baguhin

Mayroon kang i>

 git commit --amend 

hanggang sa ito ay papatayin.

Interactive redirection

Kung hindi, kung hindi ito ang iyong huling gumawa, maaari kang magsagawa ng isang interactive na pag-reboot,

 git rebase -i [branched_from] [hash before commit] 

Pagkatapos sa loob ng interactive na pag-redirect, idagdag mo lamang ang isang pag-edit sa commit na ito. Kapag nangyari ito, gawin git commit --amend at palitan ang gumawa ng mensahe. Kung nais mong bumalik sa puntong ito ng pagkapirmi, maaari mo ring gamitin git reflog at alisin lamang ang pag-aayos na ito. Pagkatapos ay patakbuhin mo ang git commit muli.

195
18 янв. Ang sagot ay ibinigay wallerjake Enero 18 2013-01-18 04:45 '13 sa 4:45 am 2013-01-18 04:45

Kung gagamitin mo ang Git GUI, maaari mong baguhin ang huling gumawa na hindi na-click:

 Commit/Amend Last Commit 
183
01 дек. Ang sagot ay ibinigay ng gulchrider Disyembre 1. 2012-12-01 08:03 '12 sa 8:03 2012-12-01 08:03

Kung ito ang iyong huling gumawa, ayusin lamang ang gumawa:

 git commit --amend -o -m "New commit message" 

(gamit ang -o (- --only ) na bandila upang matiyak na binago mo lamang ang gumawa ng mensahe)


Kung mukhang isang gumawa, gumamit ng isang kamangha-manghang interactive na rebase :

 git rebase -i @~9 # Show the last 9 commits in a text editor 

Hanapin ang ninanais na gumawa, pick pagbabago sa r ( reword ) at i-save at isara ang file. Tapos na!



Maliit na tutorial vim (o, kung paano i-install muli ang 8 keystroke 3j cw r Esc ZZ ):

  • Patakbuhin ang vimtutor kung mayroon ka ng oras.
  • h j k l tumutugma sa mga navigation key
  • Ang lahat ng mga utos ay maaaring may prefix na saklaw, halimbawa. 3j gumagalaw sa 3 linya
  • i , upang ipasok ang insert mode - ang text na ipinasok mo ay lilitaw sa file
  • Esc o Ctrl c upang lumabas sa mode ng insert at bumalik sa normal na mode.
  • u kanselahin
  • Ctrl r upang ulitin
  • dd , dw , dl upang tanggalin ang isang linya, salita o titik, ayon sa pagkakabanggit
  • cc , cw , cl upang baguhin ang isang linya, salita, o titik, ayon sa pagkakabanggit (katulad ng dd i )
  • yy , yw , yl upang kumopya ("yank") mga linya, mga salita o titik, ayon sa pagkakabanggit
  • p o p upang ipasok pagkatapos o bago ang kasalukuyang posisyon, ayon sa pagkakabanggit
  • :w Ipasok upang i-save (isulat) ang file
  • :q! Magpasok ng exit nang wa>
  • :wq Ipasok o ZZ upang i-save at lumabas

Kung nag-e-edit ka ng maraming teksto, lumipat sa layout ng keyboard ng Dvorak, matuto ng touch-type at mag-aral ng kalakasan. Mahalaga ba ang pagsisikap? Oo



ProTip ™: huwag matakot na mag-eksperimento sa "mapanganib" na mga utos na isulat ang kasaysayan ng kasaysayan * - Hindi tinatanggal ng Git ang iyong mga pag-aayos para sa 90 araw bi>

 $ git reset @~3 # go back 3 commits $ git reflog c4f708b HEAD@{0}: reset: moving to @~3 2c52489 HEAD@{1}: commit: more changes 4a5246d HEAD@{2}: commit: make important changes e8571e4 HEAD@{3}: commit: make some changes ... earlier commits ... $ git reset 2c52489 ... and you're back where you started 

* Mag-ingat sa mga parameter tulad ng --hard at --force , kahit na maaari ni> * Gayundin huwag muling isulat ang kasaysayan sa anumang sangay kung saan ka nagtutulungan.

170
10 февр. Ang sagot ay ibinigay Zaz Pebrero 10. 2015-02-10 03:01 '15 sa 3:01 2015-02-10 03:01

Ginagamit ko ang Git GUI hangga't makakaya ko, at nagbibigay ito sa iyo ng pagkakataon na baguhin ang huling mensahe:

2019

165
05 авг. ang sagot ay ibinigay ng Havard Graff 05 aug. 2013-08-05 02:13 '13 sa 2:13 2013-08-05 02:13

Wow, kaya maraming mga paraan upang gawin ito.

Ang isa pang paraan upang gawin ito ay tanggalin ang huling gumawa, ngunit i-save ang mga pagbabago nito upang hindi mo mawala ang iyong trabaho. Pagkatapos ay maaari mong gawin ang isa pang gumawa na may naitama na mensahe. Magiging ganito ang ganito:

135
03 дек. Ang sagot ay ibinigay ng Radu Murzea 03 dec. 2013-12-03 00:31 '13 sa 0:31 2013-12-03 00:31

Kung nais mong baguhin ang huling paggamit ng commit:

 git commit --amend 

o

124
07 янв. sumagot na ibinigay ni Shubham Chaudhary 07 Ene 2014-01-07 01:03 '14 sa 1:03 2014-01-07 01:03

Para sa mga naghahanap ng isang graphical na interface ng gumagamit para sa Windows / Mac upang makatulong sa pag-edit ng mga lumang mensahe (ibig sabihin, hindi lamang ang pinakahuling mensahe), Gusto ko inirerekomenda ang SourceTree . Mga hakbang upang sundin sa ibaba.

2019

123
06 нояб. Ang sagot ay ibinigay ni Steve Chambers Nobyembre 06 2014-11-06 18:01 '14 sa 18:01 2014-11-06 18:01

Kung gusto mong baguhin ang huling mensahe, dapat mong gamitin ang - wa>--only bandila o ang shortcut nito - na commit --amend :

122
23 мая '14 в 11:40 2014-05-23 11:40 sumagot kay David Ongaro noong Mayo 23, '14 sa 11:40 2014-05-23 11:40

I-update ang huling mensahe ng error sa isang bagong mensahe ng gumawa sa isang linya:

 # You can reset your head to n number of commit # NOT a good idea for changing last commit message # but you can get an idea to split commit into multiple commits git reset --soft HEAD^ # it will reset you last commit. Now, you # can re-commit it with new commit message. 

Gamitin ang reset sa split commits sa mas maliit na commits.

git reset maaaring makatulong sa iyo na masira ang isang gumawa sa i>

99
22 янв. ang sagot ay ibinigay przbadu Jan 22 2014-01-22 11:57 '14 sa 11:57 2014-01-22 11:57

Mayroong maraming mga sagot sa tanong na ito, ngunit wala sa kanila ang nagpapaliwanag nang detalyado kung paano baguhin ang mga lumang mga mensahe sa pagkapirmi sa VIM. Ako ay nanatiling sinusubukan na gawin ito sa aking sarili, kaya narito ako ay sasabihin sa iyo nang detalyado kung paano ko ito ginawa lalo na para sa mga taong wa>

Nais kong baguhin ang aking huling limang gumawa na ako ay nag-click sa server. Medyo "mapanganib" kung ang isang tao ay nakuha nito, maaari mong sirain ang mga bagay sa pamamagitan ng pagbabago ng mga mensahe ng gumawa. Gayunpaman, kapag nagtatrabaho ka sa iyong maliit na sangay at siguraduhin na wa>

Ipagpalagay na gusto mong baguhin ang iyong huling limang gumawa, pagkatapos ay ilagay ito sa terminal:

git rebase -i HEAD~5 * Kung saan ang 5 ay ang bi>

Ang utos na ito ay magdadala sa iyo sa VIM kung saan maaari mong i-edit ang iyong kasaysayan ng gumawa. Makikita mo ang huling 5 na gumawa sa itaas:

pick <commit hash> commit message

Sa halip na pick kai>reword . Magagawa mo ito sa VIM sa pamamagitan ng pag-type i , na pinipilit kang pumunta sa INSERT- mode. (Maaari mong makita na ikaw ay nasa insert mode gamit ang salitang INSERT sa ibaba). Para sa mga gumawa, gusto mong baguhin ang uri sa reword halip na pick

Pagkatapos ay kai>wq command na save at exit ay wq . Samakatuwid, kung nag-type ka :wq youre ont, siya ay tama.

Pagkatapos VIM ay pumunta sa anumang gumawa ng mensahe na nais mong muling isulat, dito maaari mong talagang baguhin ang gumawa ng mensahe. Ginagawa mo ito sa pamamagitan ng pagpunta sa INSERT- mode, pagpapalit ng mensahe ng gumawa, pagpunta sa command-mode, at pag-save at pagsasara. Gawin ito nang 5 beses, at wala ka sa VIM!

Pagkatapos, kung naitulak mo na ang iyong mga maling gumawa, kai>git push --force ito. Tandaan na ang git push --force ay isang medyo mapanganib na bagay, kaya siguraduhin na wa>

Ngayon binago mo na ang iyong mensahe na gumawa!

(Tulad ng nakikita mo, hindi ako masyadong nakaranas sa VIM, kaya kung ginamit ko ang maling "s>

82
07 авг. ang sagot ay binibigyan Marijn 07 aug. 2014-08-07 12:18 '14 sa 12:18 2014-08-07 12:18

Maaari mong gamitin ang git-rebase-reword

Он предназначен для редактирования любой фиксации (не только последней), так же как commit --amend

 $ git rebase-reword <commit-or-refname> 

Он назван в честь действия по интерактивной переадресации, чтобы исправить фиксацию: "изменить". См. этот пост и man -section interactive mode-