Paano i-unlock ang lokal git commit

Ang aking problema ay na binago ko ang file, halimbawa: README, nagdagdag ng isang bagong linya na "ito ay para sa aking test line" at na-save ang file, at pagkatapos ay inilabas ko ang mga sumusunod na utos

  git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: README # no changes added to commit (use "git add" and/or "git commit -a") git add README git commit -a -m 'To add new line to readme' 

Hindi ko pinindot ang code sa github, ngayon gusto kong kanselahin ang commit na ito.

Para sa mga ito, ginamit ko

  git reset --hard HEAD~1 

Ngunit nawala ko ang bagong idinagdag na linya na "ito ay para sa aking test line" mula sa README file. Hindi ito dapat. Kai>Mayroon bang paraan upang i-save ang nilalaman at kanselahin ang aking lokal na gumawa?

560
31 янв. itinakda ni Amal Kumar S noong Enero 31 2011-01-31 15:14 '11 sa 15:14 2011-01-31 15:14
@ 7 sagot

Gumamit lamang ng git reset wala ang --hard flag ng --hard :

 git reset HEAD~1 

PS: Sa mga sistema ng batay sa Unix, maaari mong gamitin ang HEAD^ , na HEAD~1 . Sa Windows, HEAD^ ay hindi gagana, sapagkat ^ nagpapahiwatig ng pagpapatuloy ng linya. Kaya, ang iyong command prompt ay humihiling sa iyo ng More? .

1085
31 янв. Ang sagot ay binigyan Koraktor Enero 31 2011-01-31 15:17 '11 sa 15:17 2011-01-31 15:17

Gamitin --soft halip ng --hard flag na --hard :

border=0
 git reset --soft HEAD^ 
143
10 авг. Ang sagot ay binibigyan ng TpED 10 aug. 2012-08-10 11:02 '12 sa 11:02 ng umaga 2012-08-10 11:02

Kung ikaw ay nasa gitna ng isang gumawa (ibig sabihin nasa editor), maaari mong kanselahin ito sa pamamagitan ng pagtanggal sa lahat ng mga linya sa itaas ng unang # . Ito ay matakpan ang gumawa.

Kaya, maaari mong tanggalin ang lahat ng mga linya upang ang mensahe ng gumawa ay wa>

2019

Maaari mong sabihin sa Git kung ano ang gagawin sa iyong index (ang hanay ng mga file na magiging susunod na gumawa) at ang gumaganang direktoryo kapag gumaganap git reset gamit ang isa sa mga parameter:

--soft : ang mga gumagawa lamang ay mai-reset, at ang index at nagtatrabaho na direktoryo ay hindi mababago.

--mixed : ito ay i-reset ang index ayon sa header, at ang --mixed direktoryo ay hindi maaapektuhan. Ang lahat ng mga pagbabago ay mananatili sa direktoryo ng nagtatrabaho at lumilitaw bi>

--hard : Nire-reset ang lahat (gumawa, mag-index, nagtatrabaho direktoryo) ayon sa header.

Sa iyong kaso, gagamitin ko ang git reset --soft upang i-save ang iyong mga binagong pagbabago sa index at nagtatrabaho na direktoryo. Tiyaking suriin ito para sa isang mas detalyadong paliwanag.

5
29 мая '18 в 13:22 2018-05-29 13:22 ang sagot ay ibinigay ni Nesha Zoric noong Mayo 29 '18 sa 1:22 ng gabi 2018-05-29 13:22

Ang unang bagay na kai>

Gumamit ng git log upang ipakita ang kasalukuyang mga mensahe ng gumawa, at pagkatapos ay hanapin commit_id bago mo gustong tanggalin, hindi lamang ang nais mong tanggalin.

Kung nais mong i-save ang mga binagong lokal na file, tanggalin lamang ang mensahe ng gumawa:

git reset --soft commit_id

Kung nais mong tanggalin ang lahat ng mga binagong lokal na file at ang gumawa ng mensahe:

git reset --hard commit_id

Kung ano ang pagkakaiba ay malambot at mahirap

2
02 сент. ang sagot ay binigyan ng mistdon 02 sep . 2018-09-02 06:43 '18 sa 6:43 2018-09-02 06:43

Gamitin ang utos sa ibaba: $ git reset HEAD ~ 1 Pagkatapos nito, maaari mo ring tingnan ang mga file na ibinalik, tulad ng ipinapakita sa ibaba.

Hindi natukoy na mga pagbabago pagkatapos i-reset: M application / config / config.php M application / config / database.php

1
14 мая '18 в 16:25 2018-05-14 16:25 ang sagot ay ibinigay Omkar Mayo 14 '18 sa 16:25 2018-05-14 16:25

Pagkakaiba sa pagitan ng git reset --mixed, --soft at - hard

Kinakai>git add . Sa panahon ng pagpapatakbo ng paggawa, ang mga file na inilagay ay idaragdag sa indeks.

Isang halimbawa:

 - A - B - C (master) 

HEAD nagpapahiwatig ng C at ang index ay tumutugma sa C

--soft

  • Kapag nagsagawa kami ng git reset --soft B upang tanggalin ang commit C at ituro ang pangunahing / HEAD sa B.
  • Ang Master / HEAD ay ituturo na ngayon sa B, ngunit ang index ay nagbago pa rin mula sa C.
  • Kapag tumatakbo git status maaari mong makita ang mga file index sa gumawa C bi>phased .
  • Ang pagpapatakbo ng git commit sa puntong ito ay lilikha ng isang bagong commit na may parehong mga pagbabago tulad ng sa C

--mixed

  • Patakbuhin ang git reset --mixed B
  • Kapag nagpapatupad, ang master / HEAD ay tutukuyin sa B, at ang index ay nagbabago rin upang tumugma sa B dahil sa mixed flag na ginamit.
  • Kung sa sandaling ito ay nagpatakbo kami ng git commit, wa>index ay tumutugma sa HEAD .
  • Mayroon pa kaming mga pagbabago sa direktang direktoryo, ngunit dahil wala sila sa index, ang estado ng git ay nagpapakita ng mga ito bi> .
  • Upang ayusin ang mga ito, kai>git add at pagkatapos ay ayusin gaya ng dati.

--Hard

  • Patakbuhin ang git reset --hard B
  • Kapag ang pagpapatupad ng master / HEAD ay tumuturo sa B at baguhin ang iyong nagtatrabaho direktoryo
  • Ang mga pagbabago ay idinagdag sa C at ang lahat ng mga hindi naka-alit na pagbabago ay matatanggal .
  • Ang mga file sa nagtatrabaho kopya ay tumutugma sa gumawa B, ito ay hahantong sa pagkawala ng lahat ng mga pagbabago na ginawa upang gumawa ng C, pati na rin ang mga di-kumika>

Umaasa ako na ang paghahambing ng mga flag na magagamit para sa paggamit sa git reset command ay makakatulong sa isang tao na gamitin ang mga ito nang matalino. Makipag-ugnay sa kanila para sa karagdagang impormasyon link1 link2

0
18 янв. Ang sagot ay ibinigay ni Keshan Nageswaran Jan 18 2019-01-18 19:48 '19 sa 7:48 ng hapon 2019-01-18 19:48

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