-
1. BaÅlanÄıc
- 1.1 Versiyaya NÉzarÉt Haqqında
- 1.2 Gitāin Qısa HekayÉsi
- 1.3 Git NÉdir?
- 1.4 Ęmr SÉtiri
- 1.5 Gitāi QuraÅdırmaq
- 1.6 İlk DÉfÉ Git QuraÅdırması
- 1.7 KƶmÉk Almaq
- 1.8 Qısa MÉzmun
-
2. Gitāin Ęsasları
-
3. GitādÉ Branch
-
4. ServerādÉ Git
- 4.1 Protokollar
- 4.2 ServerdÉ Git ĘldÉ EtmÉk
- 4.3 Sizin ƶz SSH Public Keyānizi yaratmaq
- 4.4 Server qurmaq
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Ćçüncü TÉrÉf SeƧimlÉri
- 4.10 Qısa MÉzmun
-
5. PaylanmıŠGit
-
6. GitHub
-
7. Git AlÉtlÉri
- 7.1 Reviziya SeƧimi
- 7.2 Interaktiv SÉhnÉlÉÅdirmÉ
- 7.3 Stashing vÉ TÉmizlÉmÉ
- 7.4 İÅinizin İmzalanması
- 7.5 AxtarıÅ
- 7.6 Tarixi YenidÉn Yazmaq
- 7.7 Reset Demystified
- 7.8 İnkiÅaf etmiÅ BirlÉÅmÉ
- 7.9 Rerere
- 7.10 Git ilÉ Debugging
- 7.11 Alt Modullar
- 7.12 Bundling
- 7.13 DÉyiÅdirmÉk
- 7.14 Etibarlı YaddaÅ
- 7.15 Qısa MÉzmun
-
8. Gitāi FÉrdilÉÅdirmÉk
-
9. Git vÉ DigÉr SistemlÉr
- 9.1 Git MüÅtÉri kimi
- 9.2 GitāÉ Miqrasiya
- 9.3 Qısa MÉzmun
-
10. Gitāin Daxili İÅlÉri
- 10.1 Plumbing vÉ Porcelain
- 10.2 Git ObyektlÉri
- 10.3 Git Referansları
- 10.4 Packfileālar
- 10.5 Refspec
- 10.6 Transfer Protokolları
- 10.7 Maintenance vÉ MÉlumatların BÉrpası
- 10.8 Mühit DÉyiÅÉnlÉri
- 10.9 Qısa MÉzmun
-
A1. Appendix A: DigÉr MühitlÉrdÉ Git
- A1.1 Qrafik interfeyslÉr
- A1.2 Visual Studioāda Git
- A1.3 Visual Studio Codeāda Git
- A1.4 EclipseādÉ Git
- A1.5 Sublime TextādÉ Git
- A1.6 Bashāda Git
- A1.7 ZshādÉ Git
- A1.8 PowerShellādÉ Git
- A1.9 Qısa MÉzmun
-
A2. Appendix B: Proqramlara Git Daxil EtmÉk
- A2.1 Ęmr-sÉtri Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Git ĘmrlÉri
- A3.1 QuraÅdırma vÉ Konfiqurasiya
- A3.2 LayihÉlÉrin Alınması vÉ Yaradılması
- A3.3 SadÉ Snapshotting
- A3.4 Branching vÉ BirlÉÅmÉ
- A3.5 LayihÉlÉrin PaylaÅılması vÉ YenilÉnmÉsi
- A3.6 Yoxlama vÉ MüqayisÉ
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-poƧt
- A3.10 Xarici SistemlÉr
- A3.11 İdarÉetmÉ
- A3.12 Plumbing ĘmrlÉri
4.4 ServerādÉ Git - Server qurmaq
Server qurmaq
GÉlin server tÉrÉfindÉ SSH giriÅini quraraq gÉzÉk.
Bu nümunÉdÉ istifadÉƧilÉrinizin identifikasiyası üçün authorized_keys
metodundan istifadÉ edÉcÉksiniz.
Ubuntu kimi standart Linux distributorunda iÅlÉdiyinizi güman edirik.
Note
|
Burada tÉsvir edilÉnlÉrin yaxÅı bir hissÉsi, manual kopyalama vÉ public key-lÉri quraÅdırmaq yerinÉ |
Birincisi, bir istifadÉƧi hesabı vÉ bu istifadÉƧi üçün .ssh qovluÄu yaradırsınız.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Bundan sonra, git
istifadÉƧisi üçün authorized_keys
faylına bÉzi developer SSH public key-lÉrini ÉlavÉ etmÉlisiniz.
Güman edÉk ki, bÉzi etibarlı public key-lÉriniz var vÉ onları müvÉqqÉti sÉnÉdlÉrdÉ saxlamısınız.
YenÉ public key-lÉr bu kimi bir ÅeyÉ bÉnzÉyir:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Onları sadÉcÉ .ssh
qovluÄundakı git
istifadÉƧinin authorized_keys
faylına ÉlavÉ edirsiniz:
$ 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
İndi, --bare
seƧimi ilÉ git init
ÉmrindÉn istifadÉ edÉrÉk boÅ bir depo qura bilÉrsiniz:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
Sonra, John, Josie vÉ ya Jessica, layihÉnin ilk versiyasını uzaqdan ÉlavÉ edÉrÉk branch-a push edÉrÉk hÉmin depo iƧÉrisinÉ push edÉ bilÉr.
DiqqÉt yetirin ki, kimsÉ bir layihÉ ÉlavÉ etmÉk istÉdikdÉ maÅına shell vermÉli vÉ Ć§Ä±lpaq bir depo yaratmalıdır.
git
istifadÉƧi vÉ depo qurduÄunuz serverin hostname olaraq gitserver
-dÉn istifadÉ edÉk.
Bunu daxili iÅlÉdirsinizsÉ vÉ bu serverÉ iÅarÉ etmÉk üçün gitserver
üçün DNS qurursunuzsa, ÉmrlÉri olduÄu kimi istifadÉ edÉ bilÉrsiniz (myproject
iƧÉrisindÉ faylları olan bir layihÉ olduÄuna inanaraq):
# on John's computer
$ 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
Bu zaman digÉrlÉri onu klonlaÅdıra bilÉr vÉ dÉyiÅikliklÉri asanlıqla geri qaytara bilÉr:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master
Bu metodla bir ovuc developer üçün Git serverini oxumaq/yazmaq üçün tez bir zamanda ÉldÉ edÉ bilÉrsiniz.
Qeyd etmÉlisiniz ki, hazırda bu istifadÉƧilÉrin hamısı serverÉ girib git
istifadÉƧisi kimi bir shell ÉldÉ edÉ bilÉrlÉr.
Bunu mÉhdudlaÅdırmaq istÉyirsinizsÉ, shell-in /etc/passwd
faylındakı baÅqa bir ÅeyÉ dÉyiÅdirmÉlisiniz.
Git ilÉ ÉlaqÉli git-shell
adlı mÉhdud bir alÉt vasitÉsi ilÉ git
istifadÉƧi hesabını yalnız Git ilÉ ÉlaqÉli fÉaliyyÉtlÉ asanlıqla mÉhdudlaÅdıra bilÉrsiniz.
Bunu git
istifadÉƧi hesabının giriÅ shell-i kimi qursanız, o zaman bu hesab serverinizÉ normal shell ƧıxıÅı ÉldÉ edÉ bilmÉz.
Bunun üçün bash
vÉ csh
ÉvÉzinÉ git-shell
daxil edin.
Bunu etmÉk üçün ÉvvÉlcÉ git-shell
Émrinin tam path adını onsuz da olmadıqda /etc/shells
-É ÉlavÉ etmÉlisiniz:
$ 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 -e /etc/shells # and add the path to git-shell from last command
İndi isÉ chsh <username> -s <shell>
istifadÉ edÉrÉk istifadÉƧi üçün shell düzÉldÉ bilÉrsiniz:
$ sudo chsh git -s $(which git-shell)
İndi git
istifadÉƧisi hÉlÉ dÉ SSH baÄlantısından Git depolarını push vÉ pull etmık üçün istifadÉ edÉ bilÉr, ancaq maÅın üzÉrindÉ shell qoya bilmir.
ĘgÉr cÉhd etsÉniz, giriŠüçün rÉdd cavabı gƶrÉcÉksiniz:
$ 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.
Bu nƶqtÉdÉ, istifadÉƧilÉr hÉlÉ dÉ git serverin Ƨata bilÉcÉyi hÉr hansı bir hosta daxil olmaq üçün SSH portunu istifadÉ edÉ bilÉrlÉr.
Bunun qarÅısını almaq istÉyirsinizsÉ, authorized_keys
faylını düzÉldÉ bilÉrsiniz vÉ mÉhdudlaÅdırmaq istÉdiyiniz hÉr key-É aÅaÄıdakı seƧimlÉri gƶndÉrÉ bilÉrsiniz:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
NÉticÉ belÉ gƶrünÉcÉkdir:
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...
İndi Git ÅÉbÉkÉ ÉmrlÉri hÉlÉ dÉ yaxÅı iÅlÉyÉcÉk, lakin istifadÉƧilÉr bir shell ÉldÉ edÉ bilmÉyÉcÉklÉr.
ĆıxıÅda deyildiyi kimi git-shell
Émrini bir az tÉnzimlÉyÉn git
istifadÉƧi ev qovluÄunda bir qovluq da qura bilÉrsiniz.
MÉsÉlÉn, serverin qÉbul edÉcÉyi Git ÉmrlÉrini mÉhdudlaÅdıra bilÉrsiniz vÉ ya istifadÉƧilÉrin belÉ bir ÅÉkildÉ SSH etmÉyÉ Ć§alıÅdıqlarını gƶrÉn mesajı düzÉldÉ bilÉrsiniz.
Shell-in fÉrdilÉÅdirilmÉsi haqqında daha Ƨox mÉlumat üçün git help shell
-i iÅÉ salın.