INDEX » Блог » WEB-программирование » Часть 1. Перенос текущего проекта под контроль версий GIT. Создание репозитория git. Создание публичного репозитория git для проекта. Работа с репозиторием разработки и сохранение изменений в публичный репозиторий.

Часть 1. Перенос текущего проекта под контроль версий GIT. Создание репозитория git. Создание публичного репозитория git для проекта. Работа с репозиторием разработки и сохранение изменений в публичный репозиторий.

Самую помощь в том, чтобы разобраться с git оказали авторы следующих статей:

1. Что имелось изначально.

Такой стандартный вариант соло-разработки. Боевой проект, рабочая копия на том же сервере, рабочая копия на домашнем компьютере.

Собственно, имею:

  1. Рабочий боевой проект

    По адресу http://mega-project.com/. Который на сервере валяется в /var/www/mega-man/mega-project

    Изначально разработка велась прямо там, по ftp редактировалось, проверялось и вновь редактировалось.

  2. Сервер, на котором валялся проект. Решил сделать копию проекта, где и вести разработку, также доступную извне.

    Скажем, по адресу http://dev.mega-project.com/. В папке /var/www/mega-man/dev-mega-project/

  3. Домашний компьютер, на котором также вертится сервер и разработническая копия проекта.

    В c:\projects\mega-project\. На своем компе захожу на проект с локального хоста по адресу http://mega-project/

2. Установка GIT

Тут проблем быть не должно. У меня под Debian вся установка вылилась в

> apt-get install git

Версия для windows найти также не составило труда.

3. Настройка и синхронизация репозиториев GIT.

Пусть в разработческой (dev) версии проекта последняя версия на текущий момент. Точно такая же копия должна быть в боевой (prod) версии проекта.

Заходим в папку с dev-копией на сервере, создаем пустой репозоторий, добавляем туда все файли из папки проекта, делаем инициирующий коммит.

# Это dev-копия проекта на удаленном сервере.
> cd /var/www/mega-man/dev-mega-project
/var/www/mega-man/dev-mega-project > git init
/var/www/mega-man/dev-mega-project > git add .
/var/www/mega-man/dev-mega-project > git commit -m "Проект создан. Во бля."

Теперь выходим на уровень выше, в папку /var/www/mega-man для создания там же публичного репозитория. То есть репозитория для обмена данными всех наших трех копий. Там по факту не будет файлов проекта, только служебные файлы GIT с историей изменений проекта.

/var/www/mega-man/dev-mega-project > cd ..
/var/www/mega-man > git clone --bare dev-mega-project mega-project.git

Публичный репозиторий для синхронизации проектов готов. В папке /var/www/mega-man/mega-project.git И вроде как там даже уже история файлов имеется.

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

# Действия производим в папке с dev-проектом
/var/www/mega-man > cd dev-mega-project
/var/www/mega-man/dev-mega-project > git config remote.origin.url "/var/www/mega-man/mega-project.git"

Это сообщит git в нашей dev-копии адрес публичного репозитория origin, который мы только что создали. Теперь после изменения dev-копии проекта будем обновлять публичный репозиторий следующим образом:

# Работаем в dev-проекте
/var/www/mega-man/dev-mega-project > git status # смотрим в какой ветке разработки
/var/www/mega-man/dev-mega-project > # сейчас находимся, пусть в master
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > git branch mega-feature # создали новую ветку проекта
/var/www/mega-man/dev-mega-project > git checkout mega-feature # переключилсь в новую ветку
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > # тут редактируем проект ...
/var/www/mega-man/dev-mega-project > # при создании ветки в git
/var/www/mega-man/dev-mega-project > # не создается никаких отдельных папок
/var/www/mega-man/dev-mega-project > # с копиями проекта, всю работу делаем
/var/www/mega-man/dev-mega-project > # той же папке с теми же файлами
/var/www/mega-man/dev-mega-project > # git создает и запоминает себе снимок
/var/www/mega-man/dev-mega-project > # master на момент создания новой ветки,
/var/www/mega-man/dev-mega-project > # то есть по адресу http://dev.mega-project.com/
/var/www/mega-man/dev-mega-project > # будут видны текущие правки,
/var/www/mega-man/dev-mega-project > # но это не master версия,
/var/www/mega-man/dev-mega-project > # а наша mega-feature.
/var/www/mega-man/dev-mega-project > # после коммита, то есть
/var/www/mega-man/dev-mega-project > # сохранения изменений в git
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > git add .
/var/www/mega-man/dev-mega-project > git commit -m'Сделали мега-фичу'
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > # Переключаемся в ветку master
/var/www/mega-man/dev-mega-project > git checkout master
/var/www/mega-man/dev-mega-project > # После этого действия
/var/www/mega-man/dev-mega-project > # и до синхронизации (merge)
/var/www/mega-man/dev-mega-project > # ветки master с новой mega-feature
/var/www/mega-man/dev-mega-project > # по адресу http://dev.mega-project.com/
/var/www/mega-man/dev-mega-project > # увидим версию проекта
/var/www/mega-man/dev-mega-project > # до начала работы.
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > git merge mega-feature
/var/www/mega-man/dev-mega-project > # Тут синхронизировали master
/var/www/mega-man/dev-mega-project > # с mega-feature, и теперь по адресу
/var/www/mega-man/dev-mega-project > # http://dev.mega-project.com/
/var/www/mega-man/dev-mega-project > # видим новые фишки
/var/www/mega-man/dev-mega-project >
/var/www/mega-man/dev-mega-project > # Теперь с чистой совестью
/var/www/mega-man/dev-mega-project > # выгружаем master в публичный
/var/www/mega-man/dev-mega-project > # репозиторий
/var/www/mega-man/dev-mega-project > git push origin master:master

Теперь, когда другие копии на других компьютерах запросят свежую версию проекта из публичного репозитория, им будет доступна наша мега-фича.

Пока все, однако продолжение следует.


Комментарии


Комментарии с 1 по 10 из 46 | Предидущие | Первые

uggs outlet
Comment
Yap632
Комментарий №46 : Sat April 19, 2014, 18:25:31
http://www.thurstonsbarn.com/thurstons.htm <a href="http://www.elizabethmenzel.com/p/beats.htm">beats outlet online</a> http://www.elizabethmenzel.com/rates.htmvf<a href="http://crushhoggottiline.com/jungle/moe.php">replica christian louboutin</a>
[url=http://www.elizabethmenzel.com/u/uggs.htm]uggs outlet[/url]

cheap uggs
Comment
Thespian684
Комментарий №45 : Sat April 19, 2014, 06:48:12
http://www.indihop.com/grove/ <a href="http://www.cateringaffairs.net/Gallery.htm">gucci outlet online</a> http://www.hopsnlops.com/showresults.htmdg<a href="http://boussais.com/ol/beats.htm">beats outlet</a>
[url=http://crushhoggottiline.com/buy/boots.htm]cheap uggs[/url]

cheap jordans
Comment
Maaike282
Комментарий №44 : Fri April 18, 2014, 08:58:25
http://www.boussais.com/thearea.htm <a href="http://www.cateringaffairs.net/Gallery.htm">gucci outlet</a> http://dcwestyouth.com/app/jordan.htmrth<a href="http://crushhoggottiline.com/make/rus.php">cheap mbt shoes</a>
[url=http://www.elizabethmenzel.com/w/jordan.htm]cheap jordans[/url]

http://www.elizabethmenzel.com/w/jordan.htm
Comment
Parser627
Комментарий №43 : Wed April 16, 2014, 23:19:54
http://boussais.com/js/boots.htm <a href="http://www.wisemanconst.com/us/jc.html">http://www.wisemanconst. com/us/jc.html</a> http://hopsnlops.com/dat/shoes.htmhj<a href="http://crushhoggottiline.com/make/rus.php">http://crushhoggottil ine.com/make/rus.php</a>
[url=http://www.elizabethmenzel.com/w/jordan .htm]http://www.elizabethmenzel.com/w/jordan.htm[/url]

beats outlet online
Comment
Desc34
Комментарий №42 : Tue April 15, 2014, 13:23:15
http://www.elizabethmenzel.com/letyourvoicebeheard.htm <a href="http://www.wisemanconst.com/us/jc.html">cheap jordans</a> http://www.sainatos.com/pro/jordan.phphj<a href="http://crushhoggottiline.com/02/beats.htm">cheap beats</a>
[url=http://www.elizabethmenzel.com/p/beats.htm]beats outlet online[/url]

gucci bags outlet
Comment
Humphrey847
Комментарий №41 : Mon April 14, 2014, 18:52:14
http://crushhoggottiline.com/the/jacket.htm <a href="http://www.cateringaffairs.net/Gallery.htm">gucci outlet online</a> http://dcwestyouth.com/ol/mk.htmhj<a href="http://www.boussais.com/thearea.htm">christian louboutin outlet</a>
[url=http://www.elizabethmenzel.com/view/gc.htm]gucci bags outlet[/url]

http://www.elizabethmenzel.com/view/gc.htm
Comment
Gerald583
Комментарий №40 : Fri April 11, 2014, 19:58:57
http://boussais.com/jia/lbt.htm <a href="http://www.wisemanconst.com/en/uggjosettered/">ugg josette</a> http://www.sainatos.com/pro/jordan.phpv<a href="http://www.wisemanconst.com/en/">michael kors factory outlet</a>
[url=http://www.elizabethmenzel.com/view/gc.htm]http://www .elizabethmenzel.com/view/gc.htm[/url]

uggs on sale
Comment
BitCode730
Комментарий №39 : Wed April 09, 2014, 01:10:12
http://dcwestyouth.com/ol/mk.htm <a href="http://crushhoggottiline.com/buy/boots.htm">ugg boots</a> http://www.indihop.com/55/coach.html4<a href="http://www.wisemanconst.com/us/jc.html">jordans for sale</a>
[url=http://www.elizabethmenzel.com/u/uggs.htm]uggs on sale[/url]

http://www.elizabethmenzel.com/p/beats.htm
Comment
Unity159
Комментарий №38 : Tue April 08, 2014, 20:45:05
http://www.indihop.com/beer/ <a href="http://www.wisemanconst.com/en/">michael kors factory outlet</a> http://dcwestyouth.com/app/louboutin.htm4<a href="http://crushhoggottiline.com/make/rus.php">mbt outlet</a>
[url=http://www.elizabethmenzel.com/p/beats.htm]http://www .elizabethmenzel.com/p/beats.htm[/url]

gucci outlet
Comment
Yellow869
Комментарий №37 : Tue April 08, 2014, 18:28:11
http://www.indihop.com/ob/beats.html <a href="http://crushhoggottiline.com/jungle/moe.php">Christian Louboutin Outlet Online</a> http://dcwestyouth.com/app/louboutin.htmdg<a href="http://crushhoggottiline.com/buy/boots.htm">http://crushhoggotti line.com/buy/boots.htm</a>
[url=http://www.cateringaffairs.net/Galler y.htm]gucci outlet[/url]


Написать комментарий


Если вы не можете прочитать содержимое картинки кликните по ней, чтобы сгенерировать новую.