Repository sa Git: ano ito, anu-ano ang mga uri at paano gumagana

May-akda: IT Sectr Nai-publish: 2026-05-09 Oras ng pagbabasa: 8 min

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 ang direktoryo ng proyekto na may folder na .git kung saan nakaimbak ang buong kasaysayan ng mga pagbabago.
  • Lokal na repository ay nasa computer ng developer at nagbibigay-daan sa pagtatrabaho sa code nang walang koneksyon sa internet.
  • Remote repository ay naka-host sa server ng GitHub, GitLab o Bitbucket at nagsisilbi para sa synchronisation sa pagitan ng mga kalahok.
  • Git ay nag-iimbak ng data bilang mga snapshot ng mga file, hindi bilang listahan ng mga pagbabago, na nagpapabilis sa mga operasyon ng branching at merging.
  • Ang version control system ay lumulutas sa problema ng sabay-sabay na pagtatrabaho sa isang proyekto, na pumipigil sa mga conflict sa pag-merge ng code.

Ano ang repository sa Git

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 at remote repository

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.

Mga pagkakaiba sa pagitan ng lokal at remote repository

KatangianLokalRemote
LokasyonSa computer ng developerSa server (GitHub, GitLab)
Access nang walang networkBuong access sa lahat ng operasyonHindi available nang walang koneksyon
SynchronizationPush/Pull sa remoteTumatanggap ng push mula sa lokal
BackupHindi protektado laban sa pagkawala ng dataNakaimbak sa server na may mga backup

Paano nag-iimbak ang Git ng data sa repository

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.

Istraktura ng folder na .git

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.

  • objects/ — lahat ng object ng repository: blobs, trees, commits, tags. Naka-imbak sa naka-compress na anyo.
  • refs/ — mga reference sa mga commit: heads (mga branch), tags (mga label), remotes (mga remote branch).
  • HEAD — file na tumuturo sa kasalukuyang aktibong branch o commit.
  • config — mga setting ng repository: remote URL, username, email at iba pang parameter.
  • index — staging area (index), kung saan iniimbak ng Git ang impormasyon tungkol sa mga file na inihanda para sa commit.
  • logs/ — mga log ng pag-update ng reference (reflog), na nag-iimbak ng kasaysayan ng paggalaw ng HEAD at mga branch.

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.

Mga pangunahing operasyon sa repository

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.

  • git init — gumagawa ng bagong walang laman na repository sa kasalukuyang direktoryo. Gumagawa ang Git ng folder na .git na may panimulang istraktura.
  • git clone — kinokopya ang isang umiiral na remote repository sa lokal na makina kasama ang buong kasaysayan ng commit.
  • git add — nagdaragdag ng mga pagbabago ng file sa staging area (index), inihahanda ang mga ito para sa commit.
  • git commit — gumagawa ng snapshot ng proyekto batay sa data mula sa index at iniimbak ito bilang isang bagong commit object.
  • git push — nagpapadala ng mga bagong commit mula sa lokal na repository patungo sa remote, ina-update ang mga branch sa server.
  • git pull — kumukuha ng mga bagong commit mula sa remote repository at pinagsasama ang mga ito sa kasalukuyang lokal na branch.

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.

Lifecycle ng file sa repository

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.

  • GitHub — pinakamalaking platform na may higit sa 100 milyong repository. Nagbibigay ng Actions, Pull Requests, Issues at Wiki. Libre para sa mga pampublikong proyekto.
  • GitLab — platform na may integrated CI/CD, Container Registry at built-in na DevOps pipeline. Magagamit bilang SaaS at self-hosted na bersyon.
  • Bitbucket — solusyon mula sa Atlassian na may integrasyon ng Jira at Trello. Sikat sa corporate environment dahil sa flexible na mga setting ng access.

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.

Mga halimbawa ng command para sa pagtatrabaho sa repository

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.

bash
# 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.

Pagtingin sa kasaysayan ng commit

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.

bash
# 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

Ano ang pagkakaiba ng repository sa proyekto?

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.

Paano gumawa ng repository sa GitHub?

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.

Maaari bang maibalik ang isang tinanggal na repository?

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.

Ano ang fork ng repository?

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.

Paano bawasan ang laki ng repository?

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

  • Git repository — ay isang imbakan ng code na may kumpletong kasaysayan ng mga pagbabago, kung saan ang bawat commit ay isang snapshot ng lahat ng file ng proyekto sa isang tiyak na oras.
  • Lokal na repository ay nakaimbak sa computer ng developer at sumusuporta sa buong hanay ng mga operasyon ng Git nang walang koneksyon sa network.
  • Remote repository ay nagsi-synchronize ng trabaho ng team sa pamamagitan ng push at pull, na nagbibigay ng iisang source of truth para sa lahat ng kalahok.
  • Ang folder na .git ay naglalaman ng lahat ng impormasyon ng serbisyo: mga object, branch reference, configuration at reflog operation log.
  • GitHub, GitLab at Bitbucket — mga pangunahing platform para sa pag-iimbak ng mga remote repository na may karagdagang CI/CD tools.
  • Ang object model ng Git ay gumagamit ng SHA-1 hashes para sa pagkilala sa bawat object, na ginagarantiyahan ang integridad ng data ng repository.
  • Rekomendasyon: palaging gumawa ng commit kahit isang beses sa isang araw at mag-synchronize sa remote repository pagkatapos ng bawat natapos na yugto ng trabaho.

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.

Pag-usapan ang proyekto

Basahin din