Ar uzplaukumu tehnoloģiju, jebkuram IT cilvēkam kļūst neizbēgami vienlaikus strādāt ar vairākiem datiem, un jūsu dati ar laiku pastāvīgi attīstās. Ir arī svarīgi izsekot visām datu izmaiņām un būt gataviem atsaukt vai atsaukt visas nevēlamās izmaiņas, kad tas ir nepieciešams.
Man jāatzīstas, savu datu versija Git ļauj man eksperimentēt vairāk projekta izstrādē. Ja es sajaucu, es zinu, ka git vienmēr ir veids, kā atsaukt un / vai atgriezt šo projekta versiju tādā, kāda tā bija pirms skrūvēšanas. Katrs slānis ir izveidots tā, lai ļautu pārskatīt un modificēt un / vai labot datu izmaiņas pirms datu pārvietošanas nākamajā posmā. Šajā blogā ir aplūkotas šādas kļūdas:
- Failu / direktoriju noņemšana no Index
- Rediģējiet pēdējo saistīto ziņojumu
- Aizmirsāt dažas izmaiņas pēdējā apņemšanās laikā
- Izmetiet vietējās izmaiņas
- Nodeva personas datus vietējai repozitorijai
- Jaunākā saistība aizstāta ar jaunu saistību izpildi
- Apstrādāja nepareizus datus
- Atgriezieties manā vecajā projekta stāvoklī
- Atgūt izdzēsto vietējo filiāli
- Atsaukt izmaiņas, kas veiktas saistībās
- Deva nepareizu nosaukumu manai filiālei
- Vēlaties pārkārtot vēstures žurnālus, pirms virzāt uz tālvadības pulti
- Veiktas nesaistītas izmaiņas vienā saistībā
- Mainīt autora e-pasta adresi visās saistībās visās filiālēs
- Zaudētie un atrastie faili
- Aizmirsu, kurā filiālē ir mans saistības ID
- Dzēst saistības no vēstures
- Nospieda nepareizu zaru uz tālvadības pulti
Failu / direktoriju noņemšana no Index
Pievienojot un / vai modificējot failus, jūs bieži mēdzat izmantot noklusējuma komandu ‘git add’, proti, visus failus un direktorijus pievienot indeksam.Daudzas reizes jums šķiet, ka pirms to izdarīšanas ir nepieciešams noņemt noteiktu failu nošķiršanas vai pārveidot tos pēdējo reizi.
Sintakse: git reset
Failu nemainīšana no apgabala Indekss dod jums vēl vienu iespēju pārstrādāt savus datus pirms apņemšanās veikt vietējo repo.
Rediģējiet pēdējo saistīto ziņojumu
fibonacci secība c ++
Komanda: git izdarīt - mainīt
Jūs varat rediģēt jaunāko saistību ziņojumu, neveidojot jaunu. Lai uzskaitītu saistību žurnālus, esmu iestatījis aizstājvārdu “hist”:
Komanda: git config - globālais alias.hist 'log - diezgan = formāts: '% C (dzeltens)% h% Creset% ad | % C (zaļš)% s% Creset% C (sarkans)% d% Creset% C (zils) [% an] '--graph --decorate --date = short'x
Nemainiet saistību ziņojumu, kas jau tiek pārsūtīts uz attālo repozitoriju un tiek kopīgots ar citiem, jo tas padarītu agrāku saistību vēsturi nederīgu un tādējādi varētu ietekmēt jebkuru uz tā balstītu darbu.
Aizmirsāt dažas izmaiņas pēdējā apņemšanās laikā
Pieņemsim, ka esat aizmirsis veikt dažas izmaiņas un jau esat veicis momentuzņēmumu, kā arī nevēlaties vēlreiz apņemties izcelt savu kļūdu.
Komanda: git izdarīt - mainīt
Es esmu uzsvēris, kā nesen izveidotā objekta sha-1 ID ir atjaunots un mainīts. Es izlikos, ka esmu izdarījis vienu apņemšanos, sajaucot abas izmaiņas vienā.
Izmetiet vietējās izmaiņas
Tātad, šeit ir gadījums, kad es pārveidoju failu “README” un iestudēju to. Pēc tam es otro reizi modificēju to pašu failu, bet sapratu, ka nevēlos otrās izmaiņas.
Ļaujiet man neatsaukt visas izmaiņas manuāli, es varu vienkārši izvilkt pakāpenisko faila versiju.
Sintakse:
git checkout -
–Lokālas izmaiņas failā
git checkout -
–Vietējās izmaiņas visos direktorijā esošajos failos & kautrīgie un kautrīgie
Komanda: git checkout - LASĪT
Tātad, es atmetu pēdējās izmaiņas failā un pieņēmu pakāpenisko faila versiju. Nākamajā saistībā tikai pakāpeniskā faila versija nonāk vietējā repozitorijā.
Nodeva personas datus vietējai repozitorijai
Es vēlos noņemt noteiktus datus no vietējās krātuves, bet saglabāt failus darba direktorijā.
Sintakse:
git reset - jaukta HEAD ~
git reset - sajaukts
Komanda: git reset - jaukta HEAD ~ 1
HEAD ~ 1 norāda apņemšanos tieši pirms nesenās saistības, uz kuru norāda pašreizējā filiāle HEAD.
Pašreizējā momentuzņēmuma faili ir noņemti gan no vietējā repozitorija, gan no pieturvietas. Pievienojiet šādus modeļus globālajā .gitignore failā, lai tos izslēgtu no git.
vim ~ / .gitignore_global
# paroles faili #
* .aplaide
* .atslēga
*. passwd
Tādējādi tiek noņemta saistība, kurai bija paroles failu momentuzņēmums, un jūs saņemat tīru pieturvietu. Mani faili joprojām atrodas manā darba direktorijā, bet vairs nav lokālajā repozitorijā, kā arī netiks virzīti uz attālo repozitoriju.
Uzmanību: Ja jūs tos pazaudējat, jūs tos nevarat atgūt, jo tas par to nezina.
Aizstājiet jaunāko apņemšanos ar jaunu
Sintakse: git reset - soft [/ HEAD ~ n>]
Opcija ‘–soft’ vienkārši noņem vietnei piesaistītos failus no vietējā repozitorija, kamēr tie joprojām ir pakāpeniski ievietoti rādītājā, un pēc pārskatīšanas tos var atkārtoti piešķirt. ir momentuzņēmuma sha-1, kuru vēlaties noņemt no vietējās repo. kur n ir apņemšanos skaits, pirms GALVA apņemas
Komanda :git reset - soft HEAD ~ 1
Modificējiet failus un kārtojiet tos vēlreiz
Komanda: git saistīt -m 'index.html un style.css pievienošana'
Jūsu saistību vēsture tagad izrādās:
Apstrādāja nepareizus datus
Sintakse:
git reset - grūti HEAD ~ n
–Iestatiet projekta “n” saistības pirms jaunākā saistītā momentuzņēmuma
git reset - grūti
–Iestatiet projektu uz piešķirto saistības momentuzņēmumu
Komanda: git reset - grūti HEAD ~ 1
Jaunākais apņemšanās un bojātie faili tiek noņemti no vietējā repozitorija, pieturvietas, kā arī darba direktorija.
Uzmanību: Tā ir bīstama komanda, jo jūs zaudējat failus darba direktorijā. Nav ieteicams attālināti koplietotajā krātuvē.
Atgriezieties manā vecajā projekta stāvoklī
Jūs varat iepazīties ar vecāku sava projekta stāvokli laika vēsturē. Ja jūs sajaucat jaunāko versiju vai jums ir nepieciešami uzlabojumi vecākā kodā, iespējams, vēlēsities izveidot jaunu filiāli no šī vecā projekta momentuzņēmuma, lai nekavētu pašreizējo darbu. Apskatīsim, kā:
a. Uzskaitiet projekta vēsturi un izlemiet par vecāku saistību ID, komandu:iet hist
b. Izveidojiet citu filiāli no saistības ID:
git checkout -b vecās valsts e7aa9a5
c. Turpiniet darbu pie koda un vēlāk apvienojiet / pārinstalējiet ar filiāli ‘master’.
Atgūt izdzēsto vietējo filiāli
Zaudēto darbu ir iespējams atjaunot uz atsauces zara. Sakiet, es izdzēsu filiāli ‘old_code’, nesaplūstot ar galveno filiāli, un zaudēju darbu. Un nē, es arī nepiespiedu zaru uz attālo krātuvi, kā tad? Labi izsekojiet un saglabājiet žurnāla ierakstu par visām izmaiņām, kas veiktas katrā atsaucē, redzēsim manu:iet reflog
Tātad, HEAD @ {2} ir rādītājs, kad es pārcēlos uz filiāli ‘old_code’, atgūsim to:
Sintakse:git izrakstīšanās -b
Komanda:git checkout -b old_code HEAD @ {2}
Izveidošanas laikā jums tagad jābūt filiālē “old_code” ar savu jaunāko darbu. Turklāt “reflog” rādītājs vietnē HEAD @ {1} bija nesen veiktā filiāles “old_code” saistītā saistība. Lai atjaunotu šo unikālo apņemties, vienkārši izpildiet komandu kā:git reset - grūti HEAD @ {1}.
Tas arī atjauno modificētos failus darba direktorijā.
Ja vēlaties detalizēti uzzināt, kā šī komanda darbojas un kā jūs varat pārvaldīt ‘reflog’ ierakstus, jūs varat arī izlasīt manu iepriekšējo ziņojumuatgūt izdzēsto filiāli no git reflog.
Atsaukt izmaiņas, kas veiktas saistībās
aizietatgrieztiestiek izmantots, lai ierakstītu dažas jaunas saistības, lai mainītu dažu iepriekšējo saistību sekas.
Sintakse: git atgriezties
No maniem saistību žurnāliem es vēlētos mainīt izmaiņas, kas veiktas iezīmētajā saistību ID:
Komanda: git revert 827bc0d
Labāk nav atiestatīt koplietotās saistības, bet tā vietā tās ir jāatjauno, lai saglabātu vēsturi, lai visiem būtu vieglāk izsekot vēstures žurnālus, lai uzzinātu, kas ir atgriezts. un kāpēc?
Varat izmantot to pašu loģiku, kā norādīt saistības, kas attiecas uz HEAD rādītāju, tā vietā, lai norādītu saistību izpildes ID, piemēram, HEAD ~ 3 vai HEAD ~ 4 utt.
Deva nepareizu nosaukumu manai filiālei
Jūs varat pārdēvēt vietējās filiāles nosaukumu. Daudzas reizes tas notiek tā, ka, iespējams, vēlēsities pārdēvēt savu filiāli, pamatojoties uz problēmu, ar kuru strādājat, nepārdzīvojot visu darbu migrēšanu no vienas vietas uz otru. Piemēram, jūs varat būt vienā filiālē vai citā filiālē un joprojām varat pārdēvēt vēlamo filiāli, kā parādīts zemāk:
Sintakse: git filiāle -m
Komanda: git filiāle -m old_code old_ # 4920
Kā jūs domājat, vai git seko līdzi šim pārdēvēšanai? Jā, tas attiecas uz jūsu “reflog” ierakstiem, šeit ir mans:
Filiāles pārdēvēšana neietekmēs tās attālinātās izsekošanas filiāli. Tālvadības sadaļā mēs redzēsim, kā nomainīt filiāli attālajā krātuvē
Pirms pārvietojat uz tālvadības pulti, sakārtojiet vēstures žurnālus
Kā es vēlētos, lai es būtu izdarījis noteiktas saistības agrāk nekā citas un nebūtu izdarījis dažas vispār. Interaktīvi pārkārtojiet un rediģējiet vecās saistības, lai efektīvi labotu vai uzlabotu kodu
Sintakse: git rebase -i
Komanda: git rebase -i fb0a90e
- sāciet pārvērtēt saistības, kas tika veiktas pēc saistības-id fb0a90e
Atkārtoti apmeklējiet git rebase dokumentācija, lai saprastu, kā “–interaktīva vai -i” atkārtota bāze atšķiras no parastas atsākšanas.
Veiktas nesaistītas izmaiņas vienā saistībā
Šajā gadījumā jums ir jāsadala veca apglabāta saistība vairākās loģiskās izdarībās.
Sintakse: git rebase -i
Komanda: git rebase -i fb0a90e
Rebase redaktorā jums jāizvēlas e7aa9a5 saistības ID un jāmaina tas uz ‘rediģēt’, nevis ‘izvēlēties’.
Tagad jūs izmantojat projekta versiju comm id-e7aa9a5. Vispirms atiestatiet saistību vēsturi un iestudēšanas apgabalu uz iepriekšējo Command-Command:git reset HEAD ~ 1
Otrkārt, rediģējiet + posms + piešķiriet failus atsevišķi
Komandas:
git add code && git saistīt -m 'Sākotnējo kodu pievienošana'
git add newcode un&it git -m 'Jauna koda pievienošana'
Treškārt, turpiniet atkārtoto bāzi un beidziet.
Komanda :git rebase - turpiniet
Ceturtkārt, apskatiet vēsturi ar papildu saistībām.
Komanda: iet hist
Mainīt autora e-pasta adresi visās saistībās visās filiālēs
Es jau ilgu laiku versiju un izpildīju savus projekta failus gitā, taču līdz šim man nekad nešķita, ka mans e-pasta ID ir apdraudēts manos saistību vēstures žurnālos, kas pat tiek publicēti attālās krātuvēs. Nu, tas var notikt ikvienam, kad sākotnēji iestatījāt konfigurācijas failā “.gitconfig”. pārrakstīt vides mainīgie, kurus mēs piedāvājam, izveidojot saistības objektu.
Vispirms es saņemu sarakstu ar e-pasta ID izlemt tos, kurus vēlos mainīt:
Komanda: git log - viss - diezgan = formāts: '% an% d'
–Šis izdrukā autora vārdu (refname / filiāles nosaukums)
Otrkārt, es izskrienu cauri katru apņemšanos katrā zarā un pārrakstiet saistības objektu ar jauno e-pasta ID
Komanda:
git filter-branch - env-filter '
ja ['$ GIT_AUTHOR_NAME' = 'divya']
pēc tam
GIT_AUTHOR_EMAIL = 'divya@github.com'
būt
'- - visi
programmu, lai apgrieztu skaitli java
Zaudētie un atrastie faili
Pieņemsim, ka esat pazaudējis noteiktu failu un neatceraties tā nosaukumu, bet varētu atcerēties dažus vārdus failā. Šajā gadījumā jūs varat rīkoties šādi:
1. darbība: Uzskaitiet visas saistības, kas jebkad saturēja faila momentuzņēmumu, ar meklēto modeli
Komanda :git rev-list - visi | xargs git grep -i 'laika zīmogs'
2. solis : Izveidojiet jaunu filiāli “pazaudēts-atrasts” no šī izceltā saistības-id
Sintakse: git checkout -b zaudēts atrasts d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f
Aizmirsu, kurā filiālē ir mans saistības ID
Reizēm, pēc tam, kad esat atklājis kļūdainu saistību ID, jūs varētu arī vēlēties uzzināt visas filiāles, kurām ir šī saistība, lai jūs varētu tos visus salabot. Katras filiāles vēstures pārbaude nav daudz praktiska lielā daudznozaru projektā.
Slikta apņemšanās, kas tika veikta manā navigācijas ēkas lietojumprogrammā, reiz pārkāpa kodu, tieši tad es to izmantoju ‘Git bisect’ komanda, lai noteiktu sliktu saistības ID sekokomanda:git filiāle - satur
uzskaitīt filiāles ar šo slikto apņemšanos.
Tātad, tagad es zinu visas filiāles, kurām joprojām ir slikta saistība, es varētu vai nu atjaunot, vai atiestatīt šo izmaiņu kopu.
Dzēst saistības no vēstures
Dažreiz es jūtu nepieciešamību vienkārši iznīcināt apņemšanos no vēstures un neatstāt tās pēdas. Es neieteiktu jums izmēģināt šo triku kopīgajā filiālē, bet tikai vietējā filiālē.
Sintakse: git rebase -i
Komanda :git rebase -i 93859d8
Rebase redaktorā-> aizstājiet ‘edit’ ar ‘drop’ iezīmētajam saistības ID: 69f4813
Dažos gadījumos šī pārrakstīšana var izraisīt konfliktus. Jums ir jāatrisina konflikti, pēc tam rīkojieties tālāk.
Brīdinājums : Šī ir bīstama komanda, jo tā pārraksta vēsturi un var zaudēt datus. Šāds zars atšķiras no tā attālinātā kolēģa, un tas būs jāpiespiež ar- spēks
vai- spēks ar nomu
opcija.
Nospieda nepareizu zaru uz tālvadības pulti
Lūk, ko es vēlos darīt - es vēlos izdzēst attālā filiāle un arī pārtrauciet to izsekot no manas vietējās filiāles. ”git push
‘Komanda, ja to lieto kopā ar--dzēst
opcija izdzēš attālo filiāli. Tādējādi es iegūstu klonētā projekta vietējo kopiju -
git klons https://github.com/greets/myProj.git
cd myProj
Kad attālā filiāle ir izdzēsta, citiem koplietotajā repo ir jāatsvaidzina un jāatjaunina viņu attālās atsauces ar--griezt
iespēja izdzēst trūkstošās objekta atsauces:git fetch - plūmju -v izcelsme
Šajā ziņojumā es esmu pieminējis dažas izplatītākās kļūdas vai izmaiņas, kuras git var palīdzēt novērst. Katrs kods ir unikāls un savā veidā izstrādāts, tāpēc ir arī dažādi veidi, kā pieiet un novērst problēmu. Jūs vienmēr varat atsaukties uz ierēdni git dokumentācija lai saprastu, kā dažādas git komandas aizsargā jūsu pirmkodu un kā komandas izmantot pēc iespējas labāk.
Tagad, kad esat sapratis parastās Git kļūdas, pārbaudiet to Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka DevOps sertifikācijas apmācības kurss palīdz izglītojamajiem saprast, kas ir DevOps, un iegūt zināšanas dažādos DevOps procesos un rīkos, piemēram, Leļļu, Jenkins, Nagios, Ansible, Chef, Saltstack un GIT, lai automatizētu vairākus SDLC soļus.
Vai mums ir jautājums? Lūdzu, pieminējiet to šīs “izplatītās Git kļūdas” komentāru sadaļā, un mēs ar jums sazināsimies