После того как у вас настроен gitosis, можно переходить к процессу его администрирования. Ниже опишу действия, которые помогают администрировать
1) Добавить нового юзера
– делаем клон локально репозитария gitosis-admin.git:
$git clone ssh://git@gitosis/gitosis-admin.git
где gitosis – алиас хоста, описанного в ~/.ssh/config
– переходим в репозитарий и правим конфиг
$cd gitosis-admin && nano gitosis.conf
– добавляем публичный ключ юзера USER (авторизация на сервере gitosis проходит от имени юзера git но по ключам; каждый юзер генерирует пару ключей и публичный высылает администратору)
$git add keydir/USER.pub
– делаем commit (обязательно, иначе git diff ничего не выведет)
$git commit -a -m "Added user USER to the git project"
– смотрим изменения
$git diff origin/master..HEAD
– делаем push
$git push
2) Добавление нового репозитария.
– на сервере gitosis создаём папку (делается от имени юзера git)
$cd ~/repositories && mkdir someproject.git && cd someproject.git/
– создаём пустой репозиторий
$git init --bare
>> Initialized empty Git repository in /home/git/repositories/someproject.git/
Что бы дать права юзеру на репозитарий – делаем как в п1 (клонируем, редактируем gitosis.conf, делаем commit и push)
3) Краткие команды.
Приятной неожиданность есть то, что git пишет историю всех команд в ~/history.git.
– узнать в каком бранче и какие файлы поменялись:
$ git status
– переключится на бранч:
$ git chekout ИМЯ_БРАНЧА
– слить изменения с бранча:
$ git pull origin ИМЯ_БРАНЧА
Если слить изменения в текущей ветки, то можно использовать краткую команду
$ git pull
– отказаться от всех правок локально:
$ git reset --hard
– создать новый бранч (создаём бранч, переключаемся на него, добавляем его в удалённый репозиторий и смотрим, появился ли он там)
$ git branch NEW_BRANCH
$ git checkout NEW_BRANCH
$ git push origin NEW_BRANCH
$ git branch -r | grep NEW_BRANCH
Но лучше явно указывать, что бы случайно не оказаться в мастере:
$ git pull origin branch22
$ git push origin branch22
– включить цветовую схему
$ git config --global color.ui true
– история изменений конкретного файла:
$ git log -p unix/nginx/vhost_templates/vhost.conf.tpl
– история изменений конкретного юзера:
$ git log -p --committer=skeletor
Разное.