Подключение нашего локального git репозитория к чистому репозиторию на сервере.
Сервер
И так, представим что мы трудимся над проектом и складываем копии локально в git или вообще просто пописываем себе код в некоей папочке и тут вдруг задумались что надо подключить к работе другого человека или, например просто хранить резервную копию не у себя на компе.
Предположим что в наличии имеется некая виртуалка на которой стоит linux ОС и git. Назовем ее громким словом сервер.
Подключаться мы будем к серверу по ssh с вводом пароля, самый простой вариант. Создадим bare репозиторий:
Copy Source | Copy HTML
mkdir google-api.git
cd google-api.git
git init --bare.git
У меня крутится gitweb от пользователя apache, следовательно что бы права были как надо: (я понимаю что это не правильно так делать, но в академических целях очень даже подойдет, плюс пользователем apache у меня пользуется только uwsgi для gitweb и redmine)
Вторая меняет владельцев рекурсивно.
Третья добавляет права на запись для группы.
Здесь мы: инициализируем проект, добавляем remote, загружаем файлы с сервера, добавляем целиком все наши файлы в локальный git, отправляем на сервер.
Ну и что бы потом можно было писать короче (только git pull или git push):
Copy Source | Copy HTML
find ../google-api.git/ -type d -exec chmod g+s {} \;
chown -R apache:apache ../google-api.git/
chmod -R g+w ../google-api.git/
Первая строка добавляет sticky bit для всех вложенных папок. Нужно для того что бы при создании нового файла или папки ей назначалась группа родительской папки, в нашем случае apache.Вторая меняет владельцев рекурсивно.
Третья добавляет права на запись для группы.
Клиент
Теперь переберемся на домашнюю машину. Пусть у нас будет папка с файлами проекта, но еще не инициализированная git. Переходим в эту папку и:
Copy Source | Copy HTML
git init
git remote add origin ssh://user@git.example.org/var/www/git/google-api.git
git fetch
git add .
git push origin master
Здесь мы: инициализируем проект, добавляем remote, загружаем файлы с сервера, добавляем целиком все наши файлы в локальный git, отправляем на сервер.
Ну и что бы потом можно было писать короче (только git pull или git push):
Copy Source | Copy HTML
echo -e "[branch \"master\"]\n remote = origin\n merge = refs/heads/master" >> .git/config
или, что лучше, руками правим файл .git/config, добавляя туда(git add remote default):
Copy Source | Copy HTML
[branch "master"]
remote = origin
merge = refs/heads/master
Комментариев нет :
Отправить комментарий