GIT и только SSH

Для совместной работы пары человек на закрытом проекте, всё, что вам нужно ― это SSH- сервер и "голый" репозиторий.

Чтобы работать с Git сервером необязательно использовать Gitosis или Gitolite. Для работы Git по протоколу SSH достаточно установленного демона SSH. В этом случае неудобство проявляется в том, что для каждого нового пользователя GIT сервера нужно заводить системного пользователя ОС и права на чтение/запись этих пользователей совпадают с правами на файлы репозитория (чтобы сделать push пользователь должен обладать правами на запись). Чтобы получить рабочий Git- сервер, к которому несколько человек имеют доступ ― просто добавьте учетные записи SSH на сервер, и положите голый репозиторий в место, к которому эти пользователи имеют доступ на чтение и запись. И всё.

Пример установки связки Git и SSH

Все репозитории будут храниться в директории /home/gitsrv для которой разрешен полный доступ для всех. Пустой репозиторий создается с ключем –bare. Для того чтобы приступить к установке любого сервера Git, вы должны экспортировать существующий репозиторий в новый «голый» репозиторий, т.е. репозиторий без рабочего каталога. Обычно это несложно сделать. Чтобы склонировать ваш репозиторий и создать новый «голый» репозиторий, выполните команду clone с параметром —bare. По существующему соглашению, каталоги с голыми репозиториями заканчиваются на .git.

  • Установим сам git
apt install git
  • Создадим на сервере пользователя git с домашней директорией /home/gitsrv
    # useradd git -d /home/gitsrv -m

    Создаем пустой репозиторий empty в директории empty.git

    $ mkdir /home/gitsrv/empty.git
    $ cd /home/gitsrv/empty.git
    $ git --bare init
    Initialized empty Git repository in /opt/gitsrv/empty.git/
  • На клиенте
    git clone git@your.server.git:/home/gitsrv/empty.git
    $ touch README
    $ git add .
    git commit -am "First initial commit."
    git push origin master
  • Всё!!! Может понадобиться задать права (444) на файлы и директории(775) в репозиториях
    chown -R git:git /home/gitsrv/;
    find /home/gitsrv -type f -exec chmod 444 {} \;
    find /home/gitsrv -type d -exec chmod 775 {} \;
  • Дополнительно на сервере. В качестве дополнительной меры предосторожности можно ограничить возможности пользователя git только действиями связанными с Git с помощью ограниченной оболочки git-shell поставляемой вместе с Git. Для этого нужно заменить интерпретатор команд пользователя на git-shell.
    $ which git-shell 
    /usr/bin/git-shell
    # nano /etc/passwd
    git:x:1002:1002:git version control:/home/gitsrv/:/usr/bin/git-shell

    Копируем файлы с разрешенными командами, из всего две list и help.

    # cp -R /usr/share/doc/git/contrib/git-shell-commands /home/gitsrv
    # chmod +x git-shell-commands/help
    # chmod +x git-shell-commands/list

Использование GIT в локальном репозитории

Шпаргалка Git для управления версиями файлов и локальный репозиторий использование без загрузки на git сервер. Иногда при правке файлов мне нужно сохранить просто истории изменений и откатиться в случае ошибки. Загружать на удаленый сервер изменения мне не нужно.

Создадим локальный репозиторий в папке с проектом:

git init

Для того, чтобы добавить все файлы из текущей директории и всех поддиректорий введите:

git add -A

Для просмотра текущего состояния можно воспользоваться командой:

git status

После добавления файлов проекта,с помощью команды создаем версию проекта. Коммит -фиксация изменений.:

git commit -am "First!"

Просмотреть коммиты можно при помощи команды:

git log

Простого всем редактирования файлов!!! Дополнительно Настройка .gitignore.

PQ VPS сервера в 28+ странах.