Git repository — ay ang imbakan ng source code ng proyekto, kung saan sinusubaybayan ng Git ang bawat pagbabago ng mga file sa buong pag-develop. Naglalaman ang repository ng kumpletong kasaysayan ng mga commit, branch at tag, na nagpapahintulot sa mga developer na magtulungan sa code. Ayon sa datos ng Git, 2024, ang repository ay ang pundasyon ng anumang version control system at ginagamit sa milyun-milyong proyekto sa buong mundo.
Mga Pangunahing Punto
Git repository — ay isang istruktura ng data kung saan iniimbak ng version control system ang metadata at mga object na naglalarawan sa kasaysayan ng mga pagbabago ng file ng proyekto. Kapag sinimulan ng developer ang repository gamit ang command na git init, gumagawa ang Git ng nakatagong folder na .git sa ugat ng proyekto.
Sa loob ng folder na ito matatagpuan ang lahat ng object, reference at configuration file na kinakailangan para sa pagpapatakbo ng system. Ang repository ay hindi nakatali sa isang partikular na lokasyon — maaaring gawin ito ng developer nang lokal, at pagkatapos ay ikonekta ito sa isang remote server.
Ang Git ay gumagamit ng modelo ng distributed repository: bawat kalahok sa proyekto ay may kumpletong kopya ng kasaysayan sa kanyang computer. Nangangahulugan ito na karamihan sa mga operasyon — commit, pagtingin sa kasaysayan, paggawa ng mga branch — ay ginagawa nang lokal nang hindi kumokonekta sa server.
Ayon sa dokumentasyon ng Git, ang distributed na arkitektura ay ginagawang matibay ang system laban sa mga pagkasira: kung ang server ay bumagsak, anumang lokal na repository ay maaaring maging mapagkukunan para sa pagpapanumbalik ng buong kasaysayan ng proyekto.
Lokal na repository — ay isang kopya ng proyekto sa computer ng developer. Naglalaman ito ng buong kasaysayan ng mga commit, branch at tag at nagbibigay-daan sa pagsasagawa ng mga operasyon ng commit, branch, merge at rebase nang walang koneksyon sa network.
Remote repository ay naka-host sa isang server at nagsisilbing synchronization point para sa lahat ng miyembro ng team. Ipinapadala ng mga developer ang kanilang mga pagbabago gamit ang command na git push at kinukuha ang mga pagbabago ng iba gamit ang command na git pull.
Ang koneksyon sa pagitan ng lokal at remote repository ay na-configure sa pamamagitan ng remote origin — URL ng server na nakaimbak sa configuration ng Git. Ang isang lokal na repository ay maaaring konektado sa maraming remote repository, na kapaki-pakinabang kapag nagtatrabaho sa mga fork.
Ang pangunahing bentahe ng modelong ito — ang developer ay maaaring magtrabaho sa code offline, at i-synchronize ang mga pagbabago lamang kapag handa nang ipadala ang resulta.
| Katangian | Lokal | Remote |
|---|---|---|
| Lokasyon | Sa computer ng developer | Sa server (GitHub, GitLab) |
| Access nang walang network | Buong access sa lahat ng operasyon | Hindi available nang walang koneksyon |
| Synchronization | Push/Pull sa remote | Tumatanggap ng push mula sa lokal |
| Backup | Hindi protektado laban sa pagkawala ng data | Nakaimbak sa server na may mga backup |
Ang modelo ng pag-iimbak ng Git ay pangunahing naiiba mula sa iba pang version control system. Sa halip na mag-imbak ng listahan ng mga pagbabago (delta) sa pagitan ng mga bersyon, nag-iimbak ang Git ng kumpletong snapshot ng lahat ng file ng proyekto sa oras ng bawat commit.
Ang bawat object sa repository ay tinutukoy ng isang natatanging SHA-1 hash na may 40 character. Kung ang nilalaman ng isang file ay hindi nagbago sa pagitan ng mga commit, ang Git ay hindi lumilikha ng bagong object kundi ginagamit muli ang umiiral na — ito ay nakakatipid ng espasyo.
Ang Git ay gumagamit ng apat na uri ng object: blob (nilalaman ng file), tree (istraktura ng direktoryo), commit (snapshot na may metadata) at tag (pinangalanang reference sa isang commit). Lahat ng object ay nakaimbak sa folder na .git/objects.
Ayon sa Git Internals, tinitiyak ng object model ng Git ang integridad ng data: anumang pagbabago sa nilalaman ng file ay nagreresulta sa isang bagong hash, na ginagawang imposible ang hindi napapansing pagbabago ng kasaysayan.
Ang folder na .git — ay ang puso ng repository. Kung wala ito, hindi masusubaybayan ng Git ang mga pagbabago, at ang isang ordinaryong direktoryo ay nananatiling isang koleksyon lamang ng mga file. Ang pag-unawa sa istraktura ng folder na ito ay tumutulong sa pag-diagnose ng mga problema sa repository.
Ang file na HEAD ay nararapat ng espesyal na atensyon. Sa normal na estado, naglalaman ito ng symbolic reference sa isang branch, halimbawa ref: refs/heads/main. Sa estado ng detached HEAD, ito ay direktang tumuturo sa isang commit — nangangahulugan ito na ang mga bagong commit ay hindi maiugnay sa anumang branch.
Ang pagtatrabaho sa Git repository ay sumasaklaw sa isang hanay ng mga pangunahing operasyon na ginagawa ng developer araw-araw. Ang bawat operasyon ay nagbabago sa estado ng repository, nagdaragdag ng mga bagong object o gumagalaw ng mga reference.
Ang mga operasyon na push at pull — ay ang tanging nangangailangan ng koneksyon sa remote server. Lahat ng iba pang operasyon ay ganap na ginagawa nang lokal, na nagsisiguro ng mataas na bilis ng trabaho kahit na may malaking kasaysayan.
Ang bawat file sa repository ay dumadaan sa apat na estado: untracked (hindi sinusubaybayan), modified (binago), staged(inihanda) at committed (na-commit). Sinusubaybayan lamang ng Git ang mga file na tahasang idinagdag sa pamamagitan ng git add o nasa kasaysayan na ng commit.
Ang pag-unawa sa modelong ito — susi sa mahusay na pagtatrabaho sa Git. Maaaring piliing ihanda ng developer para sa commit ang bahagi lamang ng mga binagong file, na lumilikha ng lohikal na kumpletong commit na may malinaw na paglalarawan.
Ang mga remote repository ay karaniwang naka-host sa mga espesyalisadong platform na nagbibigay ng web interface, sistema ng pamamahala ng access at karagdagang mga tool para sa collaborative development.
Ang pagpili ng platform ay depende sa laki ng team, mga kinakailangan sa privacy at mga kinakailangang integrasyon. Para sa mobile development, madalas pinipili ang GitHub dahil sa malawak na suporta ng komunidad at integrasyon sa CI/CD tools para sa iOS at Android.
Isaalang-alang natin ang isang praktikal na sitwasyon: isang developer ang nag-clone ng umiiral na repository, gumagawa ng bagong branch, gumagawa ng mga pagbabago at ipinapadala ang mga ito sa server. Ang bawat command ay nagpapakita ng pagtatrabaho sa iba't ibang bahagi ng repository.
# Pag-clone ng remote repository
git clone https://github.com/user/mobile-app.git
# Paglipat sa direktoryo ng proyekto
cd mobile-app
# Paglikha ng bagong feature branch at paglipat dito
git checkout -b feature/auth
# Pagsusuri ng status ng mga binagong file
git status
# Pagdaragdag ng lahat ng pagbabago sa staging area
git add .
# Paglikha ng commit na may paglalarawan
git commit -m "Add authentication module"
# Pagpapadala ng mga pagbabago sa remote repository
git push origin feature/auth
Ang command na git status — isa sa pinakakapaki-pakinabang sa araw-araw na trabaho. Ipinapakita nito kung aling mga file ang nabago, alin ang handa para sa commit, at alin ang hindi talaga sinusubaybayan ng Git.
Para sa pagsusuri ng kasaysayan ng repository, ginagamit ang command na git log na may iba't ibang flag ng pag-format. Ipinapakita nito ang kronolohiya ng mga commit, kanilang mga may-akda, petsa at SHA-1 identifier.
# Pagtingin sa kasaysayan na may visualization ng branch graph
git log --oneline --graph --all
# Pagtingin ng mga pagbabago sa isang partikular na commit
git show a1b2c3d
# Paghahambing ng kasalukuyang estado sa huling commit
git diff HEAD
# Pagtingin sa kasaysayan ng isang partikular na file
git log --follow src/MainActivity.kt
Ang flag na --graph ay nagpapakita ng ASCII graph ng mga branching, na lalong kapaki-pakinabang sa mga repository na may aktibong trabaho sa maraming branch. Para sa mga mobile project na may madalas na release, ang visual graph ay tumutulong upang mabilis na masuri ang istraktura ng pag-develop.
Mga Madalas Itanong
Repository — ay isang teknikal na imbakan ng code na may kasaysayan ng mga pagbabago. Proyekto — ay isang mas malawak na konsepto na sumasaklaw sa repository, task management system, dokumentasyon at mga proseso ng pag-develop. Ang isang proyekto ay maaaring maglaman ng maraming repository.
Gumawa ng bagong repository sa pamamagitan ng web interface ng GitHub sa pamamagitan ng pag-click sa button na New. Tukuyin ang pangalan, paglalarawan at antas ng access. Pagkatapos ay i-clone ang repository sa lokal na makina o ikonekta ang umiiral na lokal na repository sa pamamagitan ng git remote add origin.
Kung ang remote repository ay tinanggal mula sa server, ngunit hindi bababa sa isang developer ang may lokal na kopya, ang repository ay maaaring maibalik. Sapat na gumawa ng bagong remote repository at magsagawa ng git push --force mula sa lokal na kopya kasama ang buong kasaysayan.
Fork — ay isang kopya ng repository ng ibang tao sa iyong account. Makakatanggap ka ng buong kopya ng kasaysayan at maaaring gumawa ng anumang pagbabago nang hindi naaapektuhan ang orihinal. Ang mga fork ay ginagamit para sa pakikilahok sa open-source na mga proyekto sa pamamagitan ng Pull Request.
Gamitin ang git gc para sa pag-compress ng mga object at pag-alis ng hindi naaabot na data. Alisin ang malalaking file mula sa kasaysayan sa pamamagitan ng git filter-branch o git filter-repo. Para sa mga proyektong may binary file, isaalang-alang ang Git LFS (Large File Storage).
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din