-
1. Pagsisimula
-
2. Mga Pangunahing Kaalaman sa Git
-
3. Pag-branch ng Git
-
4. Git sa Server
- 4.1 Ang Mga Protokol
- 4.2 Pagkuha ng Git sa isang Server
- 4.3 Ang paglikha ng iyong Pampublikong Susi ng SSH
- 4.4 Pag-Setup ng Server
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Mga Opsyon ng Naka-host sa Third Party
- 4.10 Buod
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
-
7. Mga Git na Kasangkapan
- 7.1 Pagpipili ng Rebisyon
- 7.2 Staging na Interactive
- 7.3 Pag-stash at Paglilinis
- 7.4 Pag-sign sa Iyong Trabaho
- 7.5 Paghahanap
- 7.6 Pagsulat muli ng Kasaysayan
- 7.7 Ang Reset Demystified
- 7.8 Advanced na Pag-merge
- 7.9 Ang Rerere
- 7.10 Pagdebug gamit ang Git
- 7.11 Mga Submodule
- 7.12 Pagbibigkis
- 7.13 Pagpapalit
- 7.14 Kredensyal na ImbakanCredential Storage
- 7.15 Buod
-
8. Pag-aangkop sa Sariling Pangangailagan ng Git
- 8.1 Kompigurasyon ng Git
- 8.2 Mga Katangian ng Git
- 8.3 Mga Hook ng Git
- 8.4 An Example Git-Enforced Policy
- 8.5 Buod
-
9. Ang Git at iba pang mga Sistema
- 9.1 Git bilang isang Kliyente
- 9.2 Paglilipat sa Git
- 9.3 Buod
-
10. Mga Panloob ng GIT
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 Ang Refspec
- 10.6 Transfer Protocols
- 10.7 Pagpapanatili At Pagbalik ng Datos
- 10.8 Mga Variable sa Kapaligiran
- 10.9 Buod
-
A1. Appendix A: Git in Other Environments
- A1.1 Grapikal Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git sa Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git sa Powershell
- A1.7 Summary
-
A2. Appendix B: Pag-embed ng Git sa iyong Mga Aplikasyon
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Mga Kautusan ng Git
- A3.1 Setup at Config
- A3.2 Pagkuha at Paglikha ng Mga Proyekto
- A3.3 Pangunahing Snapshotting
- A3.4 Branching at Merging
- A3.5 Pagbabahagi at Pagbabago ng mga Proyekto
- A3.6 Pagsisiyasat at Paghahambing
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Pagtutuberong mga Utos
4.4 Git sa Server - Pag-Setup ng Server
Pag-Setup ng Server
Talakayin natin ang pag-set up ng access sa SSH sa panig ng server.
Sa halimbawa na ito, gagamitin mo ang authorized_keys
na paraan para sa pagpapatunay sa iyong mga gumagamit.
Ipinapalagay din namin na nagpapatakbo ka ng isang karaniwang distribusyon ng Linux tulad ng Ubuntu.
Ang karamihan sa inilarawan dito ay maaaring ma-automate sa pamamagitan ng paggamit sa ssh-copy-id
na utos, sa halip na manu-manong pag-kopya at pag-install sa mga pampublikong susi.
Una, maglikha ka ng isang git
na user at isang .ssh
na direktoryo para sa gumagamit na iyon.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Sunod, kailangan mong magdagdag ng ilang pampublikong susi ng SSH para sa developer sa authorized_keys
na file para sa git
na user.
Ipinapalagay namin na ikaw ay mayroong mga pinagkakatiwalaang na mga pampublikong susi at nai-save ang mga ito sa mga pansamantalang file.
Muli, ang mga pampublikong susi ay mukhang ganito:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
I-append mo lamang sila sa authorized_keys
file ng git
na user sa kanilang .ssh
na direktoryo.
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
Ngayon, maari kang mag-set up ng isang repositoryo na walang laman para sa kanila sa pamamagitan ng pagpapatakbo ng git init
kasama ang --bare
na opsyon, na nagsisimula sa isang repositoryo na walang gumagana na direktoryo:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Nasimulan ang isang walang laman na Git na repositoryo sa /srv/git/project.git/
Pagkatapos, Si John, Josie, o Jessica ay maaaring mag-push sa unang bersyon ng kanilang project papasok o sa repositoryo sa pamamagitan ng pagdagdag nito bilang isang remote at pag-push ng isang branch.
Tandaan na ang isang tao ay dapat mag-shell sa isang makina at maglikha ng isang payak na repositoryo sa bawat oras na gusto mo magdagdag ng isang proyekto.
Gamitin natin ang ang gitserver
bilang hostname ng server na saan na-setup mo ang iyong git
na user at ang repositoryo.
Kapag pinapatakbo mo ito internally, at nakapag-set up ng DNS para sa gitserver
upang ituro ang server na iyon, maaari mong gamitin ang mga utos as is (ipinapalagay na ang myproject
ay isang umiiral na proyekto na may mga file sa loob nito):
# sa Kompyuter ni John
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master
Sa puntong ito, maaaring i-clone ito ng iba at i-push ang mga pagbabago nang kasing simple ng:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
Sa pamamaraan na ito, madali mong mapapatakbo ang isang pagbasa/pagsulat na Git server para sa kaunting mga developer.
Dapat mong tandaan na sa ngayon lahat ng mga gumagamit ay maaaring mag-login sa server at makakuha ng shell bilang isang git
na gumaagamit.
Kung nais mong paghigpitan iyon, kailangan mong baguhin ang shell sa ibang bagay sa passwd
na file.
Madali mong mahigpitan ang git
na user sa paggawa lamang ng mga gawain sa Git kasama ang isang limitado na shell na kagamitan na tawag ay git-shell
na kasama sa Git.
Kapag nai-set mo ito bilang login shell ng iyong git
na user, kung gayon ang git
na user ay hindi magkakaroon ng karaniwang access sa shell sa iyong server.
Upang gamitin ito, tukuyin ang git-shell
sa halip sa bash or csh para sa login shell ng gumagamit:
Upang gawin ito, dapat mo munang idagdag ang git-shell
sa /etc/shells
kung wala pa roon:
$ cat /etc/shells # see if `git-shell` is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo vim /etc/shells # and add the path to git-shell from last command
Ngayon ay maaari mo ng i-edit ang shell para sa user sa pamamagitan ng chsh <username> -s <shell>
:
$ sudo chsh git -s $(which git-shell)
Ngayon, ang git
na user ay maaari lamang mag-push at mag-pull ng mga repositoryo sa Git gamit ang koneksyon sa SSH at hindi maaaring mag shell sa ibang makina.
Kung susubukan mo, makikita mo ang isang pagtanggi sa login tulad nito:
$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.
Ngayon ang mga utos sa Git network ay gumagana parin ng maayos ngunit ang mga gumagamit ay hindi makakakuha ng isang shell.
Gaya ng nakalagay sa output, maaari kang mag-setup ng isang direktoryo sa direktoryo sa home ng isang git
na user na i-customize ng kaunti sa git-shell
na utos.
Isang halimbawa, maaari mong mahigpitan ang mga utos ng Git na tinatanggap ng iyong server o maaari mong i-customize ang mensahe na makikita sa mga gumagamit kung susubukan nilang mag-SSH tulad niyan.
Ipatakbo ang git help shell
para sa karagdagan impormasyon sa pag-customize sa shell.