GIT сервер + клиент

niko42

Новичок
Добрый день.

P.S. пишу в оффтопе зная что отправят на гугл { но пытка не пытка:)) }

Так сложилось, что теперь я пишу код не один и нам жутко не хватает GITа.
Имеем 2 пользователя, 1 сервер. На сервере хотим расположить GIT (OS Debian)
ну установили мы его $ apt-get install git
создали проектную папку $ mkdir /home/project
инициализировали git $ git init

А тут полный тупняк - а дальше что делать? =))

P.S. Пожалуйста, не бросайте камнями. Очень буду рад советом!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Обычно все делитна на части
1. Создать репозиторий
2. Клонировать его и работать с ним локально, заливая периодически push на сервер

1. Создать репозиторий

Заходим на свой сервер, где мы уже поставили git. (Для apt основанных дистрибутивов обычно делается как sudo apt-get install git)

ssh [email protected] -p port

Создаем папку там, где нам надо и заходим внутрь нее. Здесь стоит учесть, что создавать папки просто как /home/project_name не стоит. Это нарушает логику расположения пользовательских папок. Если кто-то первый раз зайдет к вам на сервак, то может решить, что у вас есть юзер с логином project_name. Потому делаем так.
Код:
cd /home
mkdir -p git/azureus/
cd git/azureus
В папке /home/git у нас будут лежать все наши репозитории. azureus - название тестового репозитория.

Находясь внутри /home/git/azureus создаем пустой репозиторий
Код:
git init --bare
Получаем в ответ что-то вроде:
Initialized empty Git repository in /home/git/azureus/

2. Клонировать его и работать с ним локально, заливая периодически push на сервер

Далее локально, на нашем ноутбуке или компьютере, в нужной папке пишем в консоли (своем клиенте для гита) клонирование пустой репы, пример дан для linux
Код:
git clone ssh://[email protected]:port/home/git/azureus
В ответ получим нечто вроде:
Cloning into 'azureus'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.​

Это значит, что все прошло успешно и репозиторий склонирован.

Далее что вам нужно сделать - это зайти в склонированную папку и прописать в ней
Код:
git status
Получим нечто вроде:
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)​

Создадим внутри папки файл index.php и запишем туда
PHP:
<?php
echo 'test';
Снова пишем
Код:
git status
и видим, что ситуация поменялась, то есть имеем:

Untracked files:
(use "git add <file>..." to include in what will be committed)
index.php
nothing added to commit but untracked files present (use "git add" to track)​

Имеем один новый файл, который мы добавим в git путем команды
Код:
git add index.php
Смотрим статус и видим изменения. Теперь мы можем загрузить изменения на сервер.

Пишем в консоли
Код:
git commit
В открывшемся редакторе пишем commit-message, которое будет сообщением к коммиту. Сохраняем, смотрим вывод, и готовимся загрузить (сделать push на сервер)

Делаем push, то есть выгрузку данных на сервер.
Код:
git push origin master
PS: Пример не полный
PPS: Пушить в мастер нехорошо, надо сделать ветку
PPPS: В процессе могут возникать проблемы с правами доступа, априори считаю что права вы раздали правильно и можете писать в git папку с репозиториями от юзера с вашим логином, если соединяетесь не из под git@...
PPPPS: Может что-то забыл, потом допишу.
 
  • Like
Реакции: WMix

niko42

Новичок
c0dex: дык получается мы имеем два git сервера - один на локальном компе, другой на сервере верно?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
niko42, ты все сломал) Никуда ничего грузить не надо, надо сделать пустой репозиторий на сервере, склонировать его себе локально, добавить в него файлы, и запушить изменения уже на сервер.
 

fixxxer

К.О.
Партнер клуба
niko42, в гите нет понятия сервера. Все репозитории равноправны. Тот репозиторий, который у тебя на сервере, ничем не отличается ото всех остальных, кроме того, что торчит в интернет. То, что договорились все туда пушить и считать "центральным" - это исключительно предмет соглашения.

Прочитай уже gitbook )
 

fixxxer

К.О.
Партнер клуба
PPPS: В процессе могут возникать проблемы с правами доступа, априори считаю что права вы раздали правильно и можете писать в git папку с репозиториями от юзера с вашим логином, если соединяетесь не из под git@...
Соединяться надо всем под git@. Для этого в .ssh/authorized_keys кладутся ключики всех разработчиков. Еще неплохо в этот же файл прописать ограничения, чтобы кто не надо не мог ничего лишнего делать на сервере под гитовым логином. Когда надоест это делать ручками, можно установить gitolite или gitosis.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer, как вариант можно добавить юзеров в группу git и поставить соответствующие права на папки на сервере. gitolite / gitosis это хорошо, но настраивается хитро) Я имею в виду, что клонируешь репозиторий, меняешь там данные юзеров и потом пушишь на сервер, тем самым меняя настройки на сервере. Необычный способ, скажем так)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
niko42, локально для разработки тебе нужна только папка с файлами, которые ты правишь и репозиторий. Через что обмениваться, это вопрос договоренности. То есть откуда изменения будут забирать другие разрабы.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
niko42, тогда там ты и настраиваешь, как я написал свой сервер. Либо как в мануале написано. Вопросы будут - спрашивай/гугли.
 

fixxxer

К.О.
Партнер клуба
c0dex, ну, так-то тоже способ, но обычно большинству пользователей нефиг иметь возможность даже логиниться на этот сервер в шелл.
 

niko42

Новичок
Собственно подключился и с клонировал проект с сервера на локал машину через IDEA (PHPStrom) изменил/добавил новые файлы и пытаюсь обратно его выгрузить на основной гит.
В среде выполняю следующие действия
1) GIT->Add
2) GIT->Commit Derictory
3) GIT->PUSH
и как-то скудновата... Но непосредственно идея ругается

Ошибку вбил в гугл и как-то вот не помогло((
 

fixxxer

К.О.
Партнер клуба
Для начала надо делать все в консоли. Когда научишься - тогда можно уже и GUI использовать.
 

fixxxer

К.О.
Партнер клуба
ты надоел такие вопросы задавать, прочитай документацию хотя бы по основным командам
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer, ну ты просто писал про соединение под git@, а это вроде бы подразумевает возможность логина под ним, разве нет?)

niko42, можно задавать имя папки куда клонировать, да и пенести репу тоже можно, просто переименовав/переместив папку.
 
Сверху