-
1. Почетак
- 1.1 О контроли верзије
- 1.2 Кратка историја програма Гит
- 1.3 Шта је Гит?
- 1.4 Командна линија
- 1.5 Инсталирање програма Гит
- 1.6 Подешавања за први пут
- 1.7 Тражење помоћи
- 1.8 Резиме
-
2. Основе програма Гит
- 2.1 Прављење Гит репозиторијума
- 2.2 Снимање промена над репозиторијумом
- 2.3 Преглед историје комитова
- 2.4 Опозив
- 2.5 Рад са удаљеним репозиторијумима
- 2.6 Означавање
- 2.7 Гит алијаси
- 2.8 Резиме
-
3. Гранање у програму Гит
- 3.1 Укратко о гранању
- 3.2 Основе гранања и спајања
- 3.3 Управљање гранама
- 3.4 Процеси рада са гранањем
- 3.5 Удаљене гране
- 3.6 Ребазирање
- 3.7 Резиме
-
4. Гит на серверу
- 4.1 Протоколи
- 4.2 Постављање програма Гит на сервер
- 4.3 Генерисање јавног SSH кључа
- 4.4 Подешавање сервера
- 4.5 Гит демон
- 4.6 Паметан HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опције за хостовање које нуде трећа лица
- 4.10 Резиме
-
5. Дистрибуирани Гит
-
6. GitHub
-
7. Гит алати
- 7.1 Избор ревизија
- 7.2 Интерактивно стејџовање
- 7.3 Скривање и чишћење
- 7.4 Потписивање вашег рада
- 7.5 Претрага
- 7.6 Поновно исписивање историје
- 7.7 Демистификовани ресет
- 7.8 Напредно спајање
- 7.9 Rerere
- 7.10 Отклањање грешака са програмом Git
- 7.11 Подмодули
- 7.12 Паковање
- 7.13 Замена
- 7.14 Складиште акредитива
- 7.15 Резиме
-
8. Прилагођавање програма Гит
- 8.1 Конфигурисање програма Гит
- 8.2 Гит атрибути
- 8.3 Гит куке
- 8.4 Пример полисе коју спроводи програм Гит
- 8.5 Резиме
-
9. Гит и остали системи
- 9.1 Гит као клијент
- 9.2 Мигрирање на Гит
- 9.3 Резиме
-
10. Гит изнутра
- 10.1 Водовод и порцелан
- 10.2 Гит објекти
- 10.3 Гит референце
- 10.4 Pack фајлови
- 10.5 Рефспек
- 10.6 Протоколи за пренос
- 10.7 Одржавање и опоравак податак
- 10.8 Променљиве окружења
- 10.9 Резиме
-
A1. Додатак А: Програм Гит у другим окружењима
- A1.1 Графички интерфејси
- A1.2 Гит у Visual Studio
- A1.3 Гит у Visual Studio Code
- A1.4 Гит у IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Гит у Sublime Text
- A1.6 Гит унутар Bash
- A1.7 Гит у Zsh
- A1.8 Гит у Powershell
- A1.9 Резиме
-
A2. Додатак Б: Уграђивање програма Гит у ваше апликације
- A2.1 Гит из командне линије
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Додатак В: Гит команде
- A3.1 Подешавање и конфигурација
- A3.2 Набављање и креирање пројеката
- A3.3 Основно снимање
- A3.4 Гранање и спајање
- A3.5 Дељење и ажурирање пројеката
- A3.6 Инспекција и поређење
- A3.7 Отклањање грешака
- A3.8 Крпљење
- A3.9 Имејл
- A3.10 Спољни системи
- A3.11 Администрација
- A3.12 Водоводне команде
4.4 Гит на серверу - Подешавање сервера
Подешавање сервера
Прођимо кроз подешавање SSH приступа на серверској страни.
У овом примеру, користићете authorized_keys
методу за аутентификацију својих корисника.
Претпостављамо и да имате стандардну Линукс дистрибуцију као што је Убунту.
Белешка
|
Већи део овога што је приказано у овом одељку може да се аутоматизује употребом команде |
На почетку креирате git
кориснички налог i .ssh
директоријум за тог корисника.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Затим је потребно да додате неколико јавних SSH кључева програмера у фајл authorized_keys
корисника git
.
Претпоставимо да имате неке јавне кључеве којима се верује и да сте их сачували у привремене фајлове.
Опет, јавни кључеви изгледају некако овако:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Само их надовежите на постојећи садржај фајла authorized_keys
корисника git
у његовом .ssh
директоријуму:
$ 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
Сада за њих можете да подесите празан репозиторијум извршавањем команде git init
уз опцију --bare
, која иницијализује репозиторијум, а не креира радни директоријум:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
Џон, Џоси или Џесика тада могу да гурну прву верзију свог пројекта на тај репозиторијум тако што ће га додати као удаљени репозиторијум и гурнути грану на њега.
Обратите пажњу на то да неко мора искористити љуску за приступ машини и да направи огољени репозиторијум сваки пут када желите да додате нови пројекат.
Користићемо gitserver
као име хоста сервера на коме сте подесили git
корисника и репозиторијум.
Ако се интерно извршава и подесили сте DNS за gitserver
тако да показује на тај сервер, команде онда можете да користите на уобичајен начин (под претпоставком да је пројекат myproject
постоји и садржи неке фајлове):
# на Џоновом компјутеру
$ 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
Сада остали могу да клонирају и гурају промене подједнако лако:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master
Овом методом можете брзо да поставите и покренете Гит сервер са дозволом читања и уписа за неколико програмера.
Треба да обратите пажњу на то да тренутно сви корисници такође могу и да се пријаве на сервер и уђу у љуску као корисник git
.
Ако то желите да спречите, љуску ћете у фајлу passwd
морати да промените на нешто друго.
git
корисника ћете лако моћи да ограничите тако да му буду дозвољене само Гит активности користећи алат ограничене љуске под називом git-shell
који долази уз програм Гит.
Ако ово подесите као логин љуску корисника git
, он неће имати класичан приступ серверу из љуске.
То се ради тако што као корисникову логин љуску уместо bash
или csh
поставите git-shell
.
Најпре треба да у /etc/shells
додате име потпуне путање git-shell
команде ако се тамо већ не налази.
$ cat /etc/shells # погледај да ли је `git-shell` већ тамо. Ако није...
$ which git-shell # проверите да је git-shell инсталиран на ваш систем.
$ sudo -e /etc/shells # па додајте из последње команде путању до git-shell
Сада можете изменити љуску за корисника командом chsh <име_корисника> -s <љуска>
:
$ sudo chsh git -s $(which git-shell)
Сада корисник git
још увек може да користи SSH конекцију да гура и повлачи Гит репозиторијуме, али нема приступ машини преко класичног љуске.
Ако покуша, видеће поруку одбијања пријаве сличну овом:
$ 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.
У овом тренутку корисници још увек могу да користе SSH прослеђивање порта за приступ било ком хосту који је доступан са гит сервера.
Ако то желите да спречите, можете да уредите фајл authorized_keys
и да ставите следеће опције испред сваког кључа који желите да ограничите:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Резултат би требало да изгледа овако:
$ 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...
Сада ће мрежне команде програма Гит и даље радити како се очекује, али корисници неће имати приступ љуски.
Како излаз налаже, можете да подесите и директоријум у почетном директоријуму корисника git
који донекле прилагођава команду git-shell
.
На пример, можете ограничити Гит команде које ће сервер прихватити, или можете изменити поруку коју корисници виде када покушају да се повежу преко SSH.
За више информација о начину прилагођавања љуске, извршите git help shell
.