Ano ang Pagkakaiba sa pagitan ng git reset –mixed, –soft, at –hard?

Ano Ang Pagkakaiba Sa Pagitan Ng Git Reset Mixed Soft At Hard



Sa Git, ang bawat commit ay naka-link sa nakaraang commit, at ang HEAD ay tumuturo sa pinakahuling commit sa nagtatrabaho branch. Ang commit history ay naka-store bilang tree of commits. Gayunpaman, minsan kailangan ng mga developer na baguhin ang kasaysayan ng commit. Para sa layuning ito, ang ' $ git reset Ang command na ” ay ginagamit upang baguhin ang kasaysayan ng Git repository at ayusin ang mga pagkakamaling nagawa.

Ang artikulong ito ay maikling ipaliwanag ang pagkakaiba sa pagitan ng git reset –hard, –soft, at –mixed.

Ano ang Pagkakaiba sa pagitan ng git reset –mixed, –soft, at –hard?

Nagbibigay ang Git ng maraming mga pagpipilian sa pag-reset. Sa batayan ng kung paano nila pinangangasiwaan ang mga commit, ang lahat ng magagamit na mga pagpipilian ay naiiba sa bawat isa. Binabago nilang lahat ang kasaysayan ng Git at ibinalik ang HEAD. Bukod dito, iba ang kanilang pinangangasiwaan ang mga pagbabago, tulad ng:







  • Ang ' -malambot 'opsyon na ginamit kasama ng ' $ git reset ” utos na panatilihin ang mga file at ibalik ang mga pagbabago sa commit sa Git staging index.
  • $ git reset –mixed ” ay ginagamit upang i-undo ang mga pagbabago sa commit at alisin ang file mula sa staging index nang hindi tinatanggal ito mula sa gumaganang direktoryo.
  • Ang ' -mahirap 'opsyon na may ' $ git reset Ang command na ” ay ginagamit upang tanggalin ang lahat ng mga pagbabago at alisin ang mga ito mula sa lokal na direktoryo ng trabaho.

Kumuha tayo ng isang halimbawa upang makita kung paano ang ' $ git reset ” gumagana ang command sa iba't ibang opsyon!



Hakbang 1: Pumunta sa Desired Git Repository

Una, lumipat sa iyong gustong Git repository sa pamamagitan ng paggamit ng “ cd ” utos:



$ cd 'C:\Go \t is_repo'





Hakbang 2: Lumikha ng File

Ngayon, isagawa ang ibinigay na utos sa ibaba upang lumikha ng isang file:

$ hawakan File4.txt



Hakbang 3: Magdagdag ng File sa Staging Index

Gamitin ang ' git add ” utos upang idagdag ang bagong nabuong file sa staging index:

$ git add File4.txt

Hakbang 4: Magsagawa ng Mga Pagbabago

Susunod, idagdag ang lahat ng mga pagbabago sa gumaganang imbakan sa pamamagitan ng pagsasagawa ng ' git commit ” utos:

$ git commit -m 'Idinagdag ang File4'

Hakbang 5: Suriin ang Git Log

Pagkatapos, suriin ang kasaysayan ng log ng Git upang tingnan ang mga pinakabagong commit na idinagdag:

$ git log

Sa output sa ibaba, makikita na ang lahat ng mga pinakabagong idinagdag na commit ay ipinapakita, at ang ' ULO ” ay tumuturo sa kamakailang commit:

Tandaan: Upang tingnan ang kasalukuyang posisyon ng pagturo ng HEAD sa isang mas mahusay na paraan, isagawa ang ' git log 'utos kasama ang' -isang linya ' bandila:

$ git log --online

Ipinapakita sa ibaba ang ibinigay na output ang listahan ng commit SHA hash na may mga commit na mensahe:

Hakbang 6: Gamitin ang git reset –soft Command

Upang ibalik ang mga idinagdag na pagbabago mula sa Git repository sa staging index, gamitin ang “ git reset ” utos kasama ang “– malambot ” na opsyon, at tukuyin ang gustong posisyon ng HEAD kung saan kinakailangan upang ilipat ang pointer:

$ git reset --malambot ULO~ 1

Hakbang 7: Suriin ang Katayuan ng Git

Ngayon, i-verify ang pagbabalik na posisyon ng HEAD suriin ang katayuan ng imbakan ng Git:

$ katayuan ng git

Makikita na ang ' git reset –malambot ” utos ay nagbalik ng mga pagbabago sa commit sa Git staging index. Bukod dito, ang ' File4.txt ” file ay nasa Git staging index na ngayon at kailangang gawin:

Hakbang 8: Suriin ang Git Log

Upang tingnan ang kasalukuyang posisyon ng HEAD, patakbuhin ang ibinigay na command kasama ang ' -isang linya ” opsyon:

$ git log --online

Dito, itinuturo ng HEAD ang ' File3 ” mangako:

Hakbang 9: Gamitin ang git reset — mixed Command

Upang i-undo ang mga nagawang pagbabago at alisin ang mga file mula sa staging area nang hindi tinatanggal mula sa mga ito mula sa gumaganang direktoryo, isagawa ang ' $ git reset –mixed ” utos kasama ang kinakailangang posisyon ng HEAD ng commit:

$ git reset --magkakahalo ULO~ 1

Hakbang 10: Suriin ang Katayuan ng Git

Tingnan ang mga bagong idinagdag na pagbabago sa pamamagitan ng pagsuri sa katayuan ng imbakan ng Git:

$ katayuan ng git

Maaaring maobserbahan na ang mga tinukoy na pagbabago sa commit ay inalis mula sa lugar ng pagtatanghal. Gayunpaman, inilalagay sila sa lugar ng pagtatrabaho:

Hakbang 11: Suriin ang Git Log

Suriin ang kasaysayan ng log ng sanggunian ng Git repository kasama ang SHA hash:

$ git log --online

Hakbang 12: Gamitin ang git reset — hard Command

Upang alisin ang mga karagdagang pagbabago mula sa lokal na direktoryo ng pagtatrabaho ng Git, isagawa ang ' $ git reset –mahirap ” utos:

$ git reset --mahirap ULO~ 1

Hakbang 13: I-verify ang Reverted HEAD Pointer

Upang i-verify ang HEAD pointer, bumalik sa tinukoy na posisyon, patakbuhin ang ' git log ” utos:

$ git log --online

Ang output sa ibaba ay nagpapakita na ang HEAD ay tumuturo sa ' Idinagdag ang File1 ” mangako:

Hakbang 14: Suriin ang Katayuan ng Git

Upang tingnan ang mga idinagdag na pagbabago, tingnan ang katayuan ng Git:

$ katayuan ng git

Makikita na wala kaming anumang track at nakabinbing pagbabago ng ' File2.txt ” file. Samakatuwid, ang File2.txt ay ganap na tinanggal:

Hakbang 15: I-verify ang Listahan ng Nilalaman ng Repository

Upang i-verify ang listahan ng imbakan ng nilalaman, patakbuhin ang ' ls ” utos:

$ ls

Tulad ng nakikita mo, ang ' File2.txt ” file ay hindi umiiral sa kasalukuyang direktoryo:

Ipinaliwanag namin ang pagkakaiba sa pagitan ng git reset –mixed, –soft, at –hard na mga opsyon.

Konklusyon

Ang ' git reset Ang command na ” ay ginagamit para i-reset ang mga pagbabago, baguhin ang kasaysayan ng Git repository, at ayusin ang mga pagkakamali. Ang ' git reset –malambot Pinapanatili ng command ng ” ang mga file at ibinabalik ang mga pagbabago sa commit sa Git staging area. Sa kaibahan, ang ' git reset –mixed ” utos na i-undo ang mga pagbabago sa commit at alisin ang file mula sa staging index nang hindi ito tinatanggal mula sa gumaganang direktoryo. Upang tanggalin ang lahat ng mga pagbabago at alisin ang mga ito mula sa lugar ng pagtatrabaho ng Git, ang ' git reset –mahirap ” utos ay maaaring gamitin. Inilarawan ng artikulong ito ang pagkakaiba sa pagitan ng git reset –mixed, –soft, at –hard.