Начало работы с Git и GitHub

11.11.2010

Извините, не буду тратить время на длинные предисловия и рассказ о том, что такое Git и GitHub — программистам это и так известно, а если нет, то есть Google. Записываю это в большей степени для себя, чтобы не забыть, и для тех, кто также как я уже знает что-то по этой теме, хочет начать, но пока не решается.

Итак, Git у меня уже был установлен давно (то ли сразу в дистрибутиве был, то ли я ставил и забыл), я даже освоил уже команду git clone для клонирования некоторых интересных проектов с программерской социалки и хранилища исходников GitHub. Но хотелось большего. Сделать свой репозиторий и научиться работать с системой на более высоком уровне.

Регистрация в GitHub и настройка

Зарегистрироваться проблем совсем нет, но когда я захотел работать с хранилищем, выяснилось, что необходим публичный ключ. Как его делать? Ну, вообще-то, он может уже быть у вас, если существует файл ~/.ssh/id_rsa.pub.

У меня не было ни каталога ни файла. Поэтому для генерации ключа можно воспользоваться специальной командой ssh-keygen -t rsa -C 'email@example.com'. Естественно, в качестве email стоит ставить свой адрес.

А потом просто скопировать появившийся вышеуказанный файлик в соответствующее окошко гитхаба. Всё по-инструкции.

Загрузка кода в репозиторий

Нужно залогиниться в гитхаб и создать новый репозиторий, и там сразу же появляется инструкция. Как, что, зачем. Вот ровно по ней я и сделал. И получилось! :) Сделал уже три «коммита» (какой русский аналог придумать?).

Что же дальше?

Команды Git у меня пока почти никак в голове не отложились, мне не очень понятно. Читаю книгу Магия Git, надеюсь прояснится. Пока что это всё кажется жутко неудобным — слишком много действий на каждый пук. Скорей всего так просто кажется, пока нет опыта. Будем изучать. Может, посоветуете чего?

Комментарии

  1. # samlowry

    Действий особо нет —
    git commit -am «Описание»
    git push
    git pull
    git branch -n «Имя ветки»
    git checkout «Имя ветки»
    git merge «Имя ветки»

    — вот все основные кейсы моей работы.

    А с «то есть Google» каламбур-с получился: у Гугла есть конкурент гитхабу — code.google.com.

    Кстати, когда будешь разрабатывать закрытые приложения, придётся либо покупать платный доступ на Гитхабе, либо юхать свои хостинги, что не так удобно/секюрно.

  2. # aktuba

    progit.org/book/ru/ – поможет? =)

  3. # Jeck

    Samlowry, для коммерческих проектов есть assembla.com

  4. # bosha

    samlowry, насчёт своего хостинга – спорно. Всё тоже вполне секурно, особенно если без веб морды делать.

  5. #  art

    ну тебе одному то кроме commit и push особо ничего и не пригодится. ну clone и pull если че обновить. если в команде работать, там уже всякая жесть есть, и с ветками

  6. # AntonYu: 

    Jeck, так assembla же тоже платная.. С таким успехом и GitHub оплатить можно, 7$/мес не дорого.

  7. # Тормоз

    Samlowry, для коммерческих проектов я буду локально пользоваться Git + вебхуки, или как их там. В общем, всё хорошо будет :)

    Aktuba, не, она как-то переведена куцо, мне «Магия Git» больше нравится, и я её скачал локально в HTML, удобней так. Как справочник можно использовать.

  8. # samlowry

    >Всё тоже вполне секурно
    Секюрность тут не в плане безопасности. А в плане того, что как бэ сама идея гита — это сохранность инфы. Так что продолжая эту идею, центральный репозиторий лучше держать в 3м месте.

    Да не, ребзя, есть даже те, кто для 1-2 репозиториев закрытых дают бесплатный хостинг. Но Гит всё-тки более топовый проект, надежды, что там не проебут, больше. Хотя может, это просто психологическое.

    ЗЫ: я юзаю платный гитхаб.

  9. # Тормоз

    Сэм, а тебе как Git? Долго привыкал? Что нравится, что нет?

  10. # Миша: 

    Можно репозитарий хранить в папке дропбокса.
    У гитхаба есть 1 бесплатный репозитарий приватный, кажется.

  11. # AntonYu: 

    Миша, у ГитХаюа бесплатно только открытые.

  12. # samlowry

    Кстати, мои любимые маны:

    www.spheredev.org/wi… — базовые вещи, коротко без ботвы, название говорит само за себя.

    www.sourcemage.org/G… — тут всякие адвансные вещи. Тоже удобнее, чем в оригинальных доках.

    Торм, Гит нравится распределённостью. Вернее — нравился, потом для разработчиков сайтов они всё-таки стали навязывать центральный репозиторий чисто для хранения кода (забыл, как это они зовут). Раньше как было: центральный репозиторий = сайт. Секюрно-несекюрно, но если это не гигантская команда, то как-то пох. Но там вытекал концептуальный косяк: как только ты пушишь туда изменения, то если ты на сервере делаешь git status — он показывает инвертированную ситуацию: мол, у вас куча новых изменений на винте, извольте закомитить. Т. е. он так думал — сравнивая старые файлы с твоими новыми коммитами. Приходилось делать forced checkout. Вот из-за этого они и ввели обязательный центральный репозиторий, который только для хранения изменений используется (на винте нет ничего). Ну вроде несмертельно — можно сделать его в какой-нить другой папке сервака того же. Но я просто обновил где-то гит — у меня рабочий процесс полетел в жопу, я долго концы искал, вычитывая, что же не нравится Гиту.

    В остальном — я не юзал старых, централизованных систем, мне не с чем сравнивать особо. А децентрализованные обладают идентичной логикой и набором команд.

    Если ты про то, как мне вообще под гитом — ахуенно. Я параноик. Люблю, чтобы все версии хранились и хранилище было размножено в x экземплярах.

  13. # Тормоз

    Кроме последнего абзаца нифига не понял :) Но ладно, пойму позже.

  14. # Ал: 

    Есть решение для того чтобы загружать по фтп измененные и только измененные с последнего сабмита файлы?

    В идеале вообще начинать закачку сразу после сабмита.

    Есть у меня например сайт к которому есть доступ только по фтп. Я делаю множество мелких правок в самых разных файлах сайта. Чтобы упростить себе жизнь я хочу сделать локальную копию файлов сайта и работать уже с этой копией, но после каждого сабмита обновлять изменения и на сайте.

    Это реально? Поискал, но точно того что я хочу не нашел. Только похожие решения есть.

    Кто что знает по теме?

  15. # Тормоз

    Хм, ну ты можешь монтировать ftp в локальную файловую систему, например, и потом делать cp -uR /from/* /to.

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют