Github tutorial
От: Ziaw Россия  
Дата: 08.07.11 20:15
Оценка: 329 (7)
#Имя: FAQ.nemerle.Github
Небольшая вводная.

Установка GitExtensions


Качаем последний релиз отсюда http://code.google.com/p/gitextensions/downloads/list
Надо качать "Windows installer, complete including MSysGit and KDiff3 Featured"

Устанавливайте все. И msysgit и kdiff3 (для мерджа можно использовать и другие тулзы, но ставьте пока kdiff3, сменить всегда успеете).

Select SSH client — openssh (можете выбрать putty, но я не вижу ни одного его преимущества, только недостатки)

Установка гита запустится автоматически.

Первая опция — PATH, пока не починю GitVersion лучше использовать git and unix tools (на предупреждение не смотрите, виндовые утилиты так и останутся, они в PATH прописаны раньше юниксовых).
Вторая — line endings. Checkout as is commit unix stile (исправлено VladD2).

Теперь запускаем GitExtensions из start menu. Он должен попросить вас прописать имя и пароль в конфигурацию. Пишите. Язык рекомендую сменить на английский. Гитовские термины в переводе на русский выглядят, мягко говоря, непривычно.

Настройка доступа к GitHub


Ее лучше производить из командной строки git bash (если unxtools в path можно и из фара). Гитовский шелл запускается из start menu (Git\Git Bash) или нажатием Ctrl+G в Git ext.

Генерируем ключ для доступа на гитхаб. Запускаем ssh-keygen и нажимаем enter на все вопросы.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Alex/.ssh/id_rsa):<Enter>
Created directory '/c/Users/Alex/.ssh'.
Enter passphrase (empty for no passphrase):<Enter>
Enter same passphrase again:<Enter>
Your identification has been saved in /c/Users/Alex/.ssh/id_rsa.
Your public key has been saved in /c/Users/Alex/.ssh/id_rsa.pub.


Помещаем ключ на гитхаб. notepad /c/Users/Alex/.ssh/id_rsa.pub и копируем содержимое (через Notepad, некоторые редакторы могут исказить текст!). Ctrl+A Ctrl+C
Заходим на https://github.com/account/ssh нажимаем добавить ключ и вставляем в поле Key. Поле Title заполните по своему усмотрению, я туда пишу название машины на которой генерил ключ.

Проверяем, что все ок:
$ ssh git@github.com
Hi <Имя вашего эканута>! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.


Если вы это увидели значит все ок.

Форкаем и клонируем nemerle


Заходим на https://github.com/rsdn/nemerle и нажимаем кнопочку Fork. Все, у вас есть свой репозитарий, делайте в нем что хотите. Я хочу склонировать его для работы. Весьма кстати на видном месте висит текстбокс с гитовским адресом репозитария. У меня он git@github.com:Ziaw/nemerle.git

Делаю в той папке, где хочу создать клон:
$ git clone git@github.com:Ziaw/nemerle.git

Либо в GitExt нажимаю на Clone repository.

Репозиторий большой, клонируется не быстро. Зато потом вся история за 8 лет как на ладони

Создаем бранч для работы


Это не обязательно, но желательно.
$ git checkout -b my-feature

Либо в GitExt правой кнопкой на верхней ревизии (там где уже есть [master] [origin/master]) жмем Create branch, не забудьте галочку — checkout after commit.


... вобщем я уже засыпаю, продолжу завтра. Пока несколько хинтов:
0. Свежескачананный репозитарий лучше забэкапить, чтобы не качать заново. Он останется валидным, даже если вам придется убить свой форк и создать заново.

1. Создайте тестовый бранч и покоммитте в него всякой фигни, пока не сделан пуш или merge его можно удалить и все комиты в нем исчезнут (Если пуш уже сделан все равно можно удалить сразу весь форк или удалить бранч удаленно). Комиты не живут без бранча или тега, удалив бранч (по сути это просто скользящая метка) удаляются все комиты до ближайшего помеченного. Удаляется и создается форк на гитхабе почти мгновенно. Не бойтесь его грохнуть если что-то пошло не так.

2. Соответственно грохнуть несколько последних комитов очень просто: жмем на нужную ревизию и говорим: reset current branch to here.

3. Гит не даст переключить бранч или ревизию если есть незакомиченные файлы. Впрочем там всегда есть на выбор отличная опция — забить на эти файлы.

4. Как вы уже заметили, отстрелить себе ногу неверной командой в гите проще простого. Поэтому рекомендую перед любыми действиями делать комит. А еще лучше — скопировать репозитарий и потренироваться в копии.

5. Ветки origin/* это маркеры удаленного репозитария под псевдонимом origin. Таких репозитариев можно подключить сколько угодно, совсем не обязательно, чтобы они все были форками. Просто будут абсолютно разные ветки. При их чекауте гит предлагает сделать локальный бранч, соглашайтесь.

6. Замечу, что для меня гит перестал выглядеть страшно только после недели активного использования. Крепитесь.
Re: Github tutorial
От: catbert  
Дата: 08.07.11 20:21
Оценка:
а Commit as is точно наилучшая опция? для кроссплатформенного проекта особенно..ік
Re[2]: Github tutorial
От: Ziaw Россия  
Дата: 08.07.11 20:32
Оценка:
Здравствуйте, catbert, Вы писали:

C>а Commit as is точно наилучшая опция? для кроссплатформенного проекта особенно..ік


Мне кажется при других опциях в комит могут попадать артефакты перекодирования вместе с реальными правками. Хотя я могу и ошибаться. Честно говоря я не вижу проблем. Чисто юнксовые файлы не будут правиться из под винды, да и line endings у них при правке меняться не должен. Если редактор не совсем тупой. Смешанные файлы должны корректно работать под любыми l-e.
Re[2]: Github tutorial
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.11 20:40
Оценка:
Здравствуйте, catbert, Вы писали:

C>а Commit as is точно наилучшая опция? для кроссплатформенного проекта особенно..ік


Я уже это исправил. Комитить нужно в юникс-стиле.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Github tutorial
От: Ziaw Россия  
Дата: 09.07.11 07:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я уже это исправил. Комитить нужно в юникс-стиле.


Эту настройку, кстати, лучше делать не глобальную а для репозитария.

Для этого в папке репозитария надо запустить:
git config core.autocrlf=input



P.S. Слушай, а что за редактор может испохабить текст? А то ты добавил этот комент как будто от меня, а я и не знаю.
Re: Github tutorial
От: Ziaw Россия  
Дата: 09.07.11 15:52
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Он должен попросить вас прописать имя и пароль в конфигурацию.


Имя и email, опечатался.
Re[4]: Github tutorial
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.11 16:31
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Эту настройку, кстати, лучше делать не глобальную а для репозитария.


Z>Для этого в папке репозитария надо запустить:

Z>
Z>git config core.autocrlf=input
Z>


Если работаешь над разными репозиториями с разными настройками, то да. А если гит используется только для немерловых проектов (или все проекты используют юниксовые концы строк), то можно и глобально.


Z>P.S. Слушай, а что за редактор может испохабить текст?


Почти любой виндовый. Студия по умолчанию ставит \r\n, например.

Z>А то ты добавил этот комент как будто от меня, а я и не знаю.


Ну, ты же сам назвал это инструкцией. Инструкция к неправильным настройкам призывать не должна. В немерловых проектах соглашения о концах строк конкретные. И их надо соблюдать. А соблюдать их на винде практически невозможно без помощи системы контроля версий. В СВН это можно было настроить на проект. В гите хуже.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Github tutorial
От: Ziaw Россия  
Дата: 09.07.11 16:47
Оценка:
Здравствуйте, VladD2, Вы писали:

Z>>P.S. Слушай, а что за редактор может испохабить текст?


VD>Почти любой виндовый. Студия по умолчанию ставит \r\n, например.


Я про

Помещаем ключ на гитхаб. notepad /c/Users/Alex/.ssh/id_rsa.pub и копируем содержимое (через Notepad, некоторые редакторы могут исказить текст!). Ctrl+A Ctrl+C


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

Бог с ними с концами строк. Если ты считаешь это необходимым — пусть так и будет.

Свое мнение, что не дело контроля версий править исходники и виндовые концы строк на юниксе почти всеми читаются нормально я высказал. Спорить нет желания. Если возникнут изза этого проблемы — будем решать, не возникнут и слава богу.
Re: Github tutorial: ветки и форки в гите
От: Ziaw Россия  
Дата: 13.07.11 04:31
Оценка: 47 (1)
Здравствуйте, Ziaw, Вы писали:

Ветки


Очень хорошо и подробно ветки в гите разобрал IT: http://rsdn.ru/article/tools/Git.xml
Автор(ы): Игорь Ткачев
Дата: 23.05.2011
Краткое введение в Git и Git Extensions.
обязательно почитайте.

Я лишь добавлю пять копеек выжимки.

Ветки в гите являются метками на комитах. В любой момент на любой комит можно навесить ветку, в любой момент метку ветки можно удалить. Ветки бывают локальными (в которые можно и нужно делать комиты, отображаются темно красным цветом в GitExtensions (далее GE)) и глобальными (в которые комиты делать не нужно, отображаются зеленым цветом в GE и выглядят как [имя-репозитария/ветка], например [origin/master]).

Переключение между ветками происходит почти мгновенно, надо лишь выбрать ее из комбобокса в GE.

(картинка из статьи IT)

Так переключаться можно лишь по локальным веткам. Глобальные там не видны, для работы с ними надо создать лоакльные аналоги. Для этого найти нужную ветку в дереве, в контекстном меню выбрать Checkout branch, и согласиться на создание локальной ветки.

Если локальные ветки меняем мы, то глобальные ветки меняют наши коллеги. У нас они меняются когда мы делаем pull (в ветку засасываются изменения из удаленного репозитария) или push (мы заливаем свою локальную ветку в удаленный репозитарий).

Как я уже писал, имена глобальных веток предваряются алиасом репозитария который они ведут. Когда мы делаем клон, адрес клонируемого репозтария помечается алиасом origin. Но мы, так же, можем добавить любое количество удаленных репозитариев. Это делается консольной командой

git remote add алиас адрес-удаленного-репозитария


Основные моменты работы с ветками:

1. Переключение в нужную ветку: выбор ее из комбобокса или git checkout ветка
2. Комит изменений в текущую ветку: жмем комит на тулбаре GE.
3. Вливание в текущую ветку изменений из любой другой: выбор в дереве комитов нужной ветки и нажатие: Merge with branch в контекстном меню или git merge другая-ветка.

Форки на гитхабе


Создаются очень просто, надо лишь нажать кнопочку Fork на странице любого репозитария.

Что же нужно сделать, чтобы отправить свои изменения в главный репо? Рассмотрим форк немерла. После нажатия кнопочки форк, я получаю свой собственный клон репозитария на гитхабе. Дальнейшие мои действия зависят от того, есть ли у меня уже скачаный репо немерла.

А) Он есть. Тогда просто добавляем к нему репозитарий форка
git remote add fork git@github.com:Ziaw/nemerle.git

Б) Его нет. Можно склонировать главный и перейти к пункту А либо склонировать форк и добавить главный под другим именем.
git clone git@github.com:Ziaw/nemerle.git
cd nemerle
git remote add main git@github.com:rsdn/nemerle.git


Открыв репозитарий в гит экстеншенах мы видим один красный локальный бранч [master] и кучу зеленых глобальных, которые показывают состояние дел в нашем форке и главном репозитарии, они будут меняться когда мы будем делать push или pull.

Итак, мы хотим сделать некий патч, создадим для этого бранч, для этого выберем ревизию, который мы хотим продолжить (обычно мастер) и нажмем в контекстном меню Create new branch, дадим ему имя и оставим включенной галочку checkout after push. Жмем Ok и попадаем во вновьсозданый бранч. Теперь все комиты и мерджи будут идти в него, пока он нам не надоест и мы не переключимся в другой.

Бранч создан. Пишем код. Комитим. Снова пишем. Снова комитим. И так далее. Если нужно, подтягиваем изменения из основного репо. Делаем пулл и мерджим глобальный бранч [main/master]. Снова пишем и снова комитим. Вроде все готово. Делаем пулл в наш форк.

Создаем полуреквест. Заходим на гитхабе в свой форк, выбираем бранч с нашей фичей в web-UI и нажимаем большую кнопку Pull request на тулбаре.

Видим примерно такую надпись: You're asking rsdn to pull 46 commits into rsdn:master from Ziaw:cci. Что означает, что я хочу создать реквест на добавление в основную ветку немерла 46 комитов из ветки своего форка с названием cci (на самом деле это ветка Хардкейса, но не суть важно).

Пулреквест необходимо описать. Краткий заголовок и небольшое описание проделанной работы. Получится что-то типа: https://github.com/rsdn/nemerle/pull/2

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

Но тут возникает очередная незадача, кто-то был быстрее и исправил те же файлы раньше вас в главной ветке. Принять реквест автоматом не получается, о чем вам вежливо сообщают в очередном коменте. Не беда, делаем пул изменений из главного репо и делаем merge ветки main/master. Разрешаем конфликты и делаем комит. Теперь наш реквест удовлетворяет художественному вкусу Влада и может быть принят нажатием одной кнопки. Что и происходит.

Примерный процесс принятия пулреквеста можно увидеть тут https://github.com/github/linguist/pull/42

На сим заканчиваю. Если у кого-то будут вопросы — буду рад на них ответить.
Re[6]: Github tutorial
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.07.11 13:30
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, VladD2, Вы писали:


Z>>>P.S. Слушай, а что за редактор может испохабить текст?


VD>>Почти любой виндовый. Студия по умолчанию ставит \r\n, например.


Z>Я про

Z>

Z>Помещаем ключ на гитхаб. notepad /c/Users/Alex/.ssh/id_rsa.pub и копируем содержимое (через Notepad, некоторые редакторы могут исказить текст!). Ctrl+A Ctrl+C


А, ясно. Я в превый раз воспользовался Сцентилой и она, похоже, что-то не так отбразила. Там видмо важны концы строк.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Github tutorial
От: _nn_ www.nemerleweb.com
Дата: 14.07.11 06:57
Оценка:
Здравствуйте, Ziaw, Вы писали:

Почему github мне постоянно выдает:

"Oops! The key has already been taken. "
??
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Github tutorial
От: Ziaw Россия  
Дата: 14.07.11 07:11
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Почему github мне постоянно выдает:


__>"Oops! The key has already been taken. "

__>??

При заливке публичного ключа? Этот ключ уже привязан к другому акку.
Re: Github tutorial
От: FDSC Россия consp11.github.io блог
Дата: 05.08.11 14:19
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Заходим на https://github.com/rsdn/nemerle и нажимаем кнопочку Fork. Все, у вас есть свой репозитарий, делайте в нем что хотите. Я хочу склонировать его для работы. Весьма кстати на видном месте висит текстбокс с гитовским адресом репозитария. У меня он git@github.com:Ziaw/nemerle.git


Из чего заходить на https://github.com/rsdn/nemerle ? В браузере никакой кнопочки "Fork" лично у меня нет...
Re[2]: Github tutorial [отображение в браузере]
От: FDSC Россия consp11.github.io блог
Дата: 05.08.11 14:42
Оценка:
Люди, у вас github.com отображается нормально в каком браузере? Судя по скриншотам, у меня никаких картинок и т.п. нет, скрипты не работают
Re[3]: Github tutorial [отображение в браузере]
От: Mumitroller Беларусь  
Дата: 05.08.11 15:18
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Люди, у вас github.com отображается нормально в каком браузере? Судя по скриншотам, у меня никаких картинок и т.п. нет, скрипты не работают


Firefox 5.0 — все отображается, если зайти на страничку проекта предварительно залогинившись. Если не логиниться, то по адресу https://github.com/nemerle попадаешь на страничку к некоему Artur K.

Mumitroller
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Re[4]: Github tutorial [отображение в браузере]
От: Mumitroller Беларусь  
Дата: 05.08.11 15:23
Оценка:
FDS>>Люди, у вас github.com отображается нормально в каком браузере? Судя по скриншотам, у меня никаких картинок и т.п. нет, скрипты не работают

M>Firefox 5.0 — все отображается, если зайти на страничку проекта предварительно залогинившись. Если не логиниться, то по адресу https://github.com/nemerle попадаешь на страничку к некоему Artur K.


Ээээ... rsdn потерял — по адресу https://github.com/rsdn/nemerle попадаешь куда надо. Кнопочка Fork сверху справа тоже есть, но она не работает пока не залогинишься.

Mumitroller
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Re[5]: Github tutorial [отображение в браузере]
От: FDSC Россия consp11.github.io блог
Дата: 05.08.11 15:27
Оценка:
Здравствуйте, Mumitroller, Вы писали:

M>Ээээ... rsdn потерял — по адресу https://github.com/rsdn/nemerle попадаешь куда надо. Кнопочка Fork сверху справа тоже есть, но она не работает пока не залогинишься.


Спасибо за участие, но дело было не в этом — у меня как раз кнопочки где надо не было. Так и не понял, правда, что там за приколы, почему-то без разблокированных в брандмауэре IP 217.212.252.128-217.212.252.255 не отображает правильно ни github.com, ни microsoft.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.