Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut · Oppitunti

Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin

Opitte hallitsemaan täsmällisesti, mihin commitiin tai tagiin alimoduuli osoittaa, jotta buildit ovat toistettavia ja riippuvuuspäivitykset harkittuja ja tarkistettavia edistyneissä työnkuluissa.

Oppitunti 4/413 vaihetta

Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin on ilmainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.

Alimoduulit kiinnittävät commitit, eivät haaroja

Yleinen väärinkäsitys on, että alimoduuli seuraa haaraa. Todellisuudessa superprojekti tallentaa jokaiselle alimoduulille tietyn commitin SHA-tunnisteen. Haaroilla on merkitystä vain, kun päätät päivittää alimoduulin.

Tämä kiinnitys tekee alimoduuleihin perustuvista koonneista toistettavia eri koneilla ja eri aikoina.

Kiinnitetyn commitin tarkastelu

Näet tarkalleen, mihin committiin kukin alimoduuli on lukittu komennolla git submodule status. Alussa näkyvä SHA-tunniste on tallennettu kiinnitys.

git submodule status
# +a1b2c3d libs/engine (v2.3.0-4-ga1b2c3d)

Tilatunnisteen etuliitteen tulkitseminen

  • (välilyönti) — alimoduuli on kiinnitetyssä commitissa
  • + — uloskirjattu commit poikkeaa kiinnityksestä
  • - — alimoduulia ei ole alustettu
  • U — alimoduulissa on yhdistämisristiriitoja

Tiettyyn tagiin kiinnittäminen

Voit kiinnittää alimoduulin julkaistuun tagiin siirtymällä alimoduuliin, uloskirjaamalla tagin ja tallentamalla uuden osoittimen superprojektiin commitilla.

cd libs/engine
git fetch --tags
git checkout v2.4.0
cd ../..
git add libs/engine
git commit -m 'Pin engine to v2.4.0'

Tarkkaan SHA-tunnisteeseen kiinnittäminen

Joskus tarvitset julkaisujen välissä olevan commitin. Kirjaa täsmällinen SHA-tunniste ulos alimoduulin sisällä ja tallenna se sitten superprojektiin.

cd libs/engine
git checkout 9f8e7d6
cd ../..
git add libs/engine
git commit -m 'Pin engine to 9f8e7d6 hotfix'

Detached HEAD on tässä normaali

Tagin tai SHA-tunnisteen uloskirjaaminen asettaa alimoduulin tilaan detached HEAD. Kiinnittämisessä tämä on odotettua ja oikein. Siirry haaraan vain, kun aiot kehittää alimoduulin sisällä.

Valinnainen haaran seuranta

Voit tallentaa ensisijaisen haaran tiedostoon .gitmodules, jolloin git submodule update --remote tietää, mitä haaraa seurata. Kiinnitys on silti ensisijainen, kunnes päivität sen nimenomaisesti.

[submodule "libs/engine"]
  path = libs/engine
  url = https://example.com/engine.git
  branch = stable

Hallitut päivitykset komennolla --remote

Voit päivittää alimoduulin seuratun haaran uusimpaan versioon komennolla --remote. Tarkista erot ennen uuden kiinnityksen commitoimista, jotta päivitys on harkittu.

git submodule update --remote libs/engine
git diff --submodule
git add libs/engine && git commit -m 'Bump engine'

Kiinnitysten valvonta CI:ssä

Koontien pitäisi epäonnistua, jos alimoduuli poikkeaa kiinnityksestään. CI-tarkistus varmistaa, että uloskirjattu SHA-tunniste vastaa tallennettua tunnistetta.

git submodule status | grep '^+' && echo 'Submodule drift!' && exit 1

Miksi harkittu kiinnittäminen on tärkeää

Alimoduulien tahattomat päivitykset aiheuttavat usein vaikeasti jäljitettäviä koontivirheitä. Kun jokaista kiinnityksen muutosta käsitellään tarkistettavana, tarkoituksellisena commitina, riippuvuudet pysyvät ennakoitavina ja jäljitettävinä.

Virheellisen kiinnityksen kumoaminen

Jos kiinnityksen päivitys rikkoo koonnin, kumoa se kuten mikä tahansa muutos: osoitinta siirtävä superprojektin commit voidaan kumota, jolloin alimoduuli palautuu edelliseen SHA-tunnisteeseensa.

git revert <pin-bump-commit>
git submodule update --init libs/engine

Pikatesti

Testaa ymmärryksesi alimoduulien kiinnittämisestä.

Kertaus

Opit, että alimoduulit kiinnittävät commitien SHA-tunnisteet, miten komennon git submodule status etuliitteitä luetaan, miten alimoduuli kiinnitetään tagiin tai tarkkaan SHA-tunnisteeseen, miksi detached HEAD on normaali, miten valinnainen haaran seuranta toimii, miten --remote-päivityksiä hallitaan ja miten CI:ssä valvotaan poikkeamia. Harkittu kiinnittäminen pitää edistyneet alimoduuliasetukset toistettavina.

Aloita maksutta

Opi Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin” ilmainen?

Kyllä – oppitunnin ”Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssin, päivitä CoddyKit PROhon. Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin”?

Opitte hallitsemaan täsmällisesti, mihin commitiin tai tagiin alimoduuli osoittaa, jotta buildit ovat toistettavia ja riippuvuuspäivitykset harkittuja ja tarkistettavia edistyneissä työnkuluissa. Harjoittelet Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunnilla?

Kyllä. Jokainen Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Työskentely alimoduulien haarojen kanssa
  2. Sisäkkäiset alimoduulit ja monimutkaiset rakenteet
  3. Alimoduulien yleiset ongelmat ja korjaukset
  4. Alimoduulien kiinnittäminen tiettyihin tageihin ja committeihin
← Takaisin: Git edistyneellä tasolla: monorepot, submoduulit ja työnkulut