Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Небольшой туториал по Git, Дружно переходим на Git 
:(
    Опции темы
powerfox
Дата 13.8.2008, 15:28 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



По просьбам трудящихся smile
Сразу предупреждаю: это все лишь набросок, на что-то более толковое и фундаментальное совсем нет времени.
Использование Git и Git-svn

Небольшая подготовка гита к работе:
Код

git config --global user.name "Ваше имя"
git config --global user.email [email protected]
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto


Нужно зарегистрировать (правда, можно и просто работать со своим локальным) проект на на http://repo.or.cz/ , затем зарегистрировать юзера (необязательно, но так удобнее) и добавить его в свой проект.
Затем заходим в папку со своими сырцами.
Код

git init
git add . #добавит всё содержимое папки в репозиторий
git commit #твой первый коммит

Локальный репозиторий готов. Теперь можно делать абсолютно всё
Код

git branch #посмотреть, в какой вы ветке
git branch crazyBranch #создать на основе текущей ветки новую
git checkout crazyBranch #перейти на другую ветку
git checkout -b anotherCrazy # создать новую и перейти на неё


С репозиторием я общаюсь так:
Код

git-push --mirror git+ssh://[email protected]/srv/git/kdevelopdvcssupport.git
#в bashrc я прописал алиас:
alias mirror="git-push --mirror git+ssh://[email protected]/srv/git/kdevelopdvcssupport.git"
Поэтому юзаю просто mirror

Кстати, можно было и добавить в гит-ремоут короткое имя, но мне было лень.

Ещё можно просто клонировать свой свин-репозиторий (тогда останется вся история):
Код

git svn clone http://svn.foo.org/project/trunk
cd trunk
git branch #проверь, на той ли ты был ветке


Обычно я сохраняю ветку свн «чистой». Работаю в другой и делаю много-много локальных коммитов, а потом выполняю merge (но не слияние историй, а просто 1 коммит, который применяет патч). Если делать слияние историй, то потом закоммитить в свн будет невозможно: свн требует, чтобы все новые коммиты были «поверх» старых, а при слиянии некоторые коммиты (которых не в свн) могут попасть в середину.
После того, как получил копию своего свина:
Код

git checkout -b mybranch
#Спокойно вносим изменения
git-commit -a #коммитим только те файлы, которые изменены, но уже были в репозитории
#создаём новый файл и добавляем его в репозиторий
git add genious.cpp
git commit #коммитим только то, что прошло через add
mirror #зеркалимся с нашим гит-репозиторием
git-checkout master #мы опять в нашей копии svn
git-svn rebase #получаем все новые коммиты с свн
###Если в master были внесены какие-то изменения с свн, которых нет у вас:
git-merge --squash mybranch
git commit #коммитим слияние с mybranch
#Если в истории mybranch всё отличие «наверху» истории, то можно так:
git-merge mybranch #сохраняется вся история коммитов

git-svn dcommit #коммитим в svn


Рекомендую ознакомиться со следующей документацией:
Туториалы (простые, понятные и толковые), руководство пользователя и т.д. http://git.or.cz/#documentation
Моя небольшая статья о том, как использовать Git c SVN (и об SVN:externals): http://www.kdevelop.org/mediawiki/index.ph...for_Development


Это сообщение отредактировал(а) powerfox - 13.8.2008, 21:18


--------------------
user posted image
PM WWW   Вверх
GrayCardinal
Дата 13.8.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



powerfox
Благодарю, буду переваривать smile


--------------------
PM MAIL WWW   Вверх
nickless
Дата 13.8.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 7
Всего: 181



ИМХО самое первое что нужно сделать перед использованием git, это включить цветной вывод smile 
Код

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto


Кстати, для переходящих с SVN есть Git - SVN Crash Course.



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
GrayCardinal
Дата 13.8.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



nickless
Благодарю  smile

Добавлено через 10 минут и 43 секунды
Зарегался на приведенном выше сайте. Создал проджект. Чего дальше делать ? 
git init це ж для локального репозитария, так ?


--------------------
PM MAIL WWW   Вверх
bilbobagginz
Дата 13.8.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 14
Всего: 317



Цитата(GrayCardinal @  13.8.2008,  17:41 Найти цитируемый пост)
git init це ж для локального репозитария, так ? 

идею понимаешь... там ты всё делаешь через локальный, и иногда пушишь свой код кому-то, или пуллишь чужой код к себе.
т.е. нет "центрального" репозитария.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
powerfox
Дата 13.8.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(nickless @  13.8.2008,  18:38 Найти цитируемый пост)
ИМХО самое первое что нужно сделать перед использованием git, это включить цветной вывод
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

Тогда уж первым всё-таки это:
Код

git config --global user.name "Your Name"
git config --global user.email [email protected]

smile
Добавил и то, и то в первое сообщение.

Это сообщение отредактировал(а) powerfox - 13.8.2008, 21:17


--------------------
user posted image
PM WWW   Вверх
GrayCardinal
Дата 14.8.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



Хочешь коммить, хочешь не коммить, хочешь удалить - пожалуйста ! Ммм  smile 
Что есть "SVN" ? smile


--------------------
PM MAIL WWW   Вверх
powerfox
Дата 14.8.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(GrayCardinal @  14.8.2008,  12:20 Найти цитируемый пост)
Что есть "SVN" ? smile 

?


--------------------
user posted image
PM WWW   Вверх
GrayCardinal
Дата 15.8.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



powerfox
Ну, типа забыл уже  smile 


--------------------
PM MAIL WWW   Вверх
neutrino
Дата 18.8.2008, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(bilbobagginz @  13.8.2008,  18:15 Найти цитируемый пост)
идею понимаешь... там ты всё делаешь через локальный, и иногда пушишь свой код кому-то, или пуллишь чужой код к себе.
т.е. нет "центрального" репозитария.

Что-то я не понял. Пуш и пул - это типа чек ин/аут ??? Как это нет центрального репозитария? А куда тогда код чекинится?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
nickless
Дата 18.8.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 7
Всего: 181



Цитата(neutrino @  18.8.2008,  06:44 Найти цитируемый пост)
Пуш и пул - это типа чек ин/аут ??? 

Это типа update и (batch) commit

Цитата(neutrino @  18.8.2008,  06:44 Найти цитируемый пост)
Как это нет центрального репозитария? А куда тогда код чекинится? 

Молча, на то оно и называется распределённой системой smile Репозиторий локальный на каждом клиенте, код чекинится туда.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
neutrino
Дата 18.8.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(nickless @  18.8.2008,  17:32 Найти цитируемый пост)
Это типа update и (batch) commit

Huh??

Цитата(nickless @  18.8.2008,  17:32 Найти цитируемый пост)
Молча, на то оно и называется распределённой системой smile Репозиторий локальный на каждом клиенте, код чекинится туда. 

А потом merge?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
nickless
Дата 18.8.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 7
Всего: 181



neutrino, ну почитай Git - SVN Crash Course, ссылку я где-то в начале темы выкладывал, там вкратце всё изложено, и сравнение с коммандами svn есть.

Цитата(nickless @  18.8.2008,  17:32 Найти цитируемый пост)
(batch) commit

Я имел ввиду что пуш это как несколько (svn) коммитов сразу...


Вообще в принципе идея очень проста - вместо одного центрального сервера с репозиторием у каждого есть своя копия репозитория, с которым каждый работает как ему угодно. Когда надо - мержит с любым другим репозиторием.
Делать это можно хоть после каждого коммита (будет как в svn), а переодический pull из другого репозиотория поддерживает локальную копию в свежем состоянии с остальным миром - это исключает конфликты при push-e.

Если например нескольким людам нужно работать группой отдельно от других - они просто деалют push/pull между собой.
Если нужен цетральный репозиторий для официальной версии - просто каждый клонирует центральный репозиторий и синхронизируется с ним.
Если кто-то работает над экспериментальной версией, он может вообще неделями не давать её никому пока она не заработает, и это всё прекрасно смержится с основной версией, потому что он постоянно синхронизировал свою работу с другими и если были конфликты, то способ их разрешения тоже записан в репозитории...

Такой же способ синхронизации используется для бранчей, по этому в git-е удобные бранчи и удобные способы мержить их друг с другом или мержить отдельные коммиты между ними, и самое главное, поддерживать их в синхронизированном состоянии с чем угодно.

Что-то я разошелся, надо закруглятся... smile 

Короче, git рулит по полной, у него есть конечно некоторые странности и ограничения, но по сравнению с неудобствами других систем они ИМХО не значительны. smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
neutrino
Дата 18.8.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



И все это удовольствие работает только в Линуксе?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
powerfox
Дата 18.8.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(neutrino @  18.8.2008,  23:25 Найти цитируемый пост)
И все это удовольствие работает только в Линуксе? 

Везде smile
С гитом под винду, кажется, проблем уже нет. А Mercurial и Bazaar вообще на питоне написаны.


--------------------
user posted image
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Клуб юнуксоидов | Следующая тема »


 




[ Время генерации скрипта: 0.1418 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.