Github
(4)Так как Cogear² переехал на Github, который сегодня занимает бесспорное первое место среди веб-сервисов для хостинга проектов Open Source, предлагаю в этом сообществе обсуждать все тонкости работы с ним.
Небольшая инструкция которая поможет вам разобраться как использовать git и не завести себя в тупик. Я не претендую на оригинальность, т.к материалу по git'у в интернете полно, просто может быть это поможет вам быстренько освоится с git'ом.
Команды вводим в терминале под linux или скачав git под windows, скачав пакет msysgit, после его установки у вас появится полноценный терминал с поддержкой git. Также если вы привыкли к графической оболочке, то можно ещё скачать пакет Tortoise Git, это оболочка поверх msysgit, которая встраивается в контекстное меню проводника и работает с git на уровне папок.
Итак, как получить рабочую копию с git репозитория? Её нужно клонировать.
Пока вы скачиваете копию репозитория к себе, немного предыстории.
Ну начнем с того что git был создан не без известным Линусом Торвальдсом, которого не устраивала текущая ситуация в области Систем Управления Версиями, ему нужна была очень шустрая и мощная система способная работать с такими большими проектами как Linux Kernel.
В чем же так хорош git?
Он координально отличается от других систем, тем как он смотрит на изменяемые файлы и работает с ними, большинство известных СУВ хранят список изменений (патчей) для файлов. Git делает иначе, он хранит слепки состояния файловой системы (в пределах репозитория конечно).
Очень высокая скорость работы, всё очень просто, git просто создаёт копию репозитория локально, т.е вам не нужно даже постоянное подключение к сети интернет чтобы вносить изменения в репозиторий, делайте это локально, а потом просто синхронизируйте с удалённым.
Если у вас уже всё докачалось, то пора начинать наши эксперименты.
К примеру вам захотелось поэкспериментировать над некоторыми шестерёнками поковыряться в коде, но вы не хотите портить код из основной ветки, да и при последующих обновлениях есть вероятность потереть ваши изменения. Просто создадим свою ветку и будем проводить эксперименты там.
Дальше, создаем пару файлов где нибудь в корне.
После можно узнать мнение git на этот счёт.
Чтобы git увидел их, просто добавим их в индекс (что то типа учёта всех фалов).
Теперь нужно зафиксировать изменения, чтобы git сделал слепок.
Поздравляю, вы совершили первые изменения в своём локальном репозиотрии и зафиксировали их.
Ой, я кажется не то сделал, как же мне тепереь вернуться обратно и всё исправить?
Нам поможет git reset, она позволяет вернуться обратно и всё исправить.
Просто пишем
а просто переходит на указанную точку в индексе, позволяя сделать изменения и вернуться обратно к последнему состоянию. HEAD^ — как раз означает что на 1 коммит раньше самого последнего, HEAD^^ будет означать на 2 коммита. Если же использовать ключ --hard, то сотрется последний коммит или 2 последних (HEAD^^).
После soft ресета, делаем нужные правки над файлами и возвращаемся обратно.
после этого можно смело удалять ненужную нам ветку.
Ну а теперь давайте зальём изменения в основной удалённый репозиторий. В этом нам поможет git push. Можно даже дословно перевести, как протолкнуть свои изменения. Но думаю хорошим тоном будет взять обновления с удалённого репозитория, вдруг кто то там уже что то изменил.
Данная заметка поможет быстро начать работу с git. Список его возможностей довольно огромен, так что рекомендую ознакомится со следующим материалом.
P.S.
Большинство проблем возникающих с git связаны с непониманием принципов его работы, если вы разберетесь как он устроен и как работает, всё сразу встанет на свои места и проблемы исчезнут сами собой.
Команды вводим в терминале под linux или скачав git под windows, скачав пакет msysgit, после его установки у вас появится полноценный терминал с поддержкой git. Также если вы привыкли к графической оболочке, то можно ещё скачать пакет Tortoise Git, это оболочка поверх msysgit, которая встраивается в контекстное меню проводника и работает с git на уровне папок.
Итак, как получить рабочую копию с git репозитория? Её нужно клонировать.
git clone git://github.com/codemotion/cogear.git (репозиторий будет клонирован в папку cogear)Пока вы скачиваете копию репозитория к себе, немного предыстории.
Ну начнем с того что git был создан не без известным Линусом Торвальдсом, которого не устраивала текущая ситуация в области Систем Управления Версиями, ему нужна была очень шустрая и мощная система способная работать с такими большими проектами как Linux Kernel.
В чем же так хорош git?
Очень высокая скорость работы, всё очень просто, git просто создаёт копию репозитория локально, т.е вам не нужно даже постоянное подключение к сети интернет чтобы вносить изменения в репозиторий, делайте это локально, а потом просто синхронизируйте с удалённым.
Если у вас уже всё докачалось, то пора начинать наши эксперименты.
К примеру вам захотелось поэкспериментировать над некоторыми шестерёнками поковыряться в коде, но вы не хотите портить код из основной ветки, да и при последующих обновлениях есть вероятность потереть ваши изменения. Просто создадим свою ветку и будем проводить эксперименты там.
git checkout -b my_code_experiments
команда checkout позволяет переключаться между ветками, а ключик -b просто создаст её если таковой не существует.Дальше, создаем пару файлов где нибудь в корне.
touch mynewfile.php
После можно узнать мнение git на этот счёт.
git status
Данная команда покажет вам измененные файлы, добавленные и не индексированые. Наши новосозданные будут в группе Untracked files.Чтобы git увидел их, просто добавим их в индекс (что то типа учёта всех фалов).
git add mynewfile.php
если указать git add без параметра, то он добавит в индекс все новосозданные и измененные файлы.Теперь нужно зафиксировать изменения, чтобы git сделал слепок.
git commit -am "my new changes"
ключ -a отвечает за индексацию всех измененных файлов в проекте (чтобы нам вручную этого не делать), а -m позволяет указать название коммита напрямую без открытия редактора.Поздравляю, вы совершили первые изменения в своём локальном репозиотрии и зафиксировали их.
Ой, я кажется не то сделал, как же мне тепереь вернуться обратно и всё исправить?
Нам поможет git reset, она позволяет вернуться обратно и всё исправить.
Просто пишем
git reset --soft HEAD^
Обратите внимание на ключ --soft, это можно сказать мягкий режим работы команды, который не удаляет индекс ( последний совершенный коммит скажем )а просто переходит на указанную точку в индексе, позволяя сделать изменения и вернуться обратно к последнему состоянию. HEAD^ — как раз означает что на 1 коммит раньше самого последнего, HEAD^^ будет означать на 2 коммита. Если же использовать ключ --hard, то сотрется последний коммит или 2 последних (HEAD^^).
После soft ресета, делаем нужные правки над файлами и возвращаемся обратно.
git commit -C ORIG_HEAD
После сделанных операций, мы скажем к примеру пофиксили некоторые баги или написали новую шестерёнку и хотим слить с основной веткой dev.
git checkout dev
git merge my_code_experiments
Данной операцией git сольет всю историю изменений с вашей ветки и вставит в нужное место в сливаемую dev ветку.после этого можно смело удалять ненужную нам ветку.
git branch -d my_code_experiments
Ну а теперь давайте зальём изменения в основной удалённый репозиторий. В этом нам поможет git push. Можно даже дословно перевести, как протолкнуть свои изменения. Но думаю хорошим тоном будет взять обновления с удалённого репозитория, вдруг кто то там уже что то изменил.
git pull
Если возникнут конфликты, то git предложит решить их самостоятельно, скажем слить 2 файла в 1, если самостоятельно не получится.Данная заметка поможет быстро начать работу с git. Список его возможностей довольно огромен, так что рекомендую ознакомится со следующим материалом.
Довольно небольшие статейки охватывающие большинство возможностей git.
1.Git Workflow 2.Git WizardryУчебник по Git на русском.
Pro GitБолее наглядный и менее объемный мануал по Git.
Git How ToПро Pull Request'ы на GitHub
Pull request'ы на GitHub или Как мне внести изменения в чужой проектP.S.
Большинство проблем возникающих с git связаны с непониманием принципов его работы, если вы разберетесь как он устроен и как работает, всё сразу встанет на свои места и проблемы исчезнут сами собой.


Просто супер! Все по шагам разложено. Пост очень кстати.
Спасибо!
Можно указывать папку явно, например так:
git clone git://github.com/codemotion/cogear.git www
habrahabr.ru/blogs/Git/125999