Руководства, Инструкции, Бланки

Git-gui руководство img-1

Git-gui руководство

Рейтинг: 5.0/5.0 (1922 проголосовавших)

Категория: Руководства

Описание

Ставим GIT под Windows

всем привет!
Че то давно я не писал никаких статей, сегодня восполню этот пробел и расскажу Вам, как поднять кошерный GIT под Windows. Кто работает под Linux, у тех и так все ясно, а вот под Windows не все так однозначно, есть много путей достижения цели и что плохо, нет единой документации в одном месте, приходится много искать и экспериментировать.

Я перепробовал множество вариантов, в итоге по результатам экспериментов и опыта использования выбрал для себя (по моему мнению) лучший и хочу поделиться с Вами поэтапными инструкциями, ЧТО устанавливать и КАК?
---
Сразу хочу предупредить, что выкиньте (деинсталлируйте) всяческие Гитхаб, Битбукет и прочие клиенты, они нам нафиг ненужны. Мы будем поднимать реально удобную систему, максимально совместимую с классическим GIT (точнее, это и есть классический GIT, только скомпилированный под Windows, все нативные консольные команды) + удобный графический клиент.
Изм. AlkatraZ (17.08.2015 / 02:41) [1]

Итак, первым пунктом нам понадобится собственно GIT.
И не какое-нибудь совместимое извращение, а настоящий, нативно-консольный.
Даже если Вы почти не пользуетесь консолью, он Вам все равно понадобится, ибо без него не будет работать GIT в большинстве IDE редакторов (к примеру PhpStorm требует наличия консольного GIT).
TortoiseGit, который мы установим далее, тоже это использует.
Для этого качаем GIT отсюда: https://git-scm.com/download/win

После скачки запускаем файл и проводим инсталляцию:

1) При выборе компонентов, которые будут устанавливаться, рекомендую все оставить по-умолчанию, за исключением:
* Отметьте пункт "Git Bash Here", это удобная консоль, она Вам потом очень понадобится. Разумеется можно выбрать и родную Windows консоль, но я лично предпочитаю использовать Bash от Git, там гарантируется 100% совместимость по командам.
* Не отмечайте пункт (не надо инсталлировать) "Git Gui Here". Лишний мусор нам не нужен, а Gui клиент мы будем использовать другой.

2) На следующем экране Вам будет предложено выбрать "Adjusting your PATH environment".
* Выбираем "Use Windows Command. " (второй пункт), это добавит GIT в окружение PATH и можно будет спокойно пользоваться как Windows консолью, так и Git Bash

3) На третьем экране спросят про обработку EOL (переносов строк).
* Смело можете оставить рекомендуемое значение (первый пункт списка).

Запустится установка, дождитесь ее окончания.

Вот и все, консольный GIT у нас уже установлен, но пока еще не настроен.
Не спешите с настройкой, ею займемся в 3-й части статьи.
Изм. AlkatraZ (03.02.2016 / 12:33) [4]

Теперь установим GUI клиент.
Под Windows их существует довольно много: https://git-scm.com/downloads/guis и это не считая встроенных в IDE.
Но мне из всего этого многообразия, наиболее удобным показался TortoiseGit, его и будем ставить.
От работает через родной Windows проводник файлов и виден через файловые менюхи большинства программ. Очень удобно когда привыкнете.
Качаем отсюда: https://tortoisegit.org/
Выбираем версию, в зависимости от того, какой битности у Вас стоит Windows (32 или 64-bit).
Если хотите, чтоб говорило на Вашем языке, тут же можно скачать и локализацию (опять выбираете нужную битность).

В начале запускаем инсталляцию собственно TortoiseGit (язык, если надо установите после).

1) При выборе компонентов для установки, можете оставить все, что есть по-умолчанию.

2) Далее, он Вас спросит, какой SSH клиент хотите использовать: рекомендованный Putty, или нативный GIT, выбираем нативный GIT.

Дождитесь окончания установки, после (если надо) можете инсталлировать язык.
Потом попросит перезагрузить систему.
Все почти будет готово (о тонкой настройке расскажу ниже).
Изм. AlkatraZ (03.02.2016 / 12:44) [4]

Теперь займемся настройкой GIT.

1) Первое, что вам следует сделать после установки Git, — указать ваше имя и адрес электронной почты. Это важно, потому что каждый коммит в Git содержит эту информацию, и она включена в коммиты, передаваемые вами. Для этого открываем Git Bash (консоль) и последовательно вводим следующие команды (имя и Email разумеется смените на свои):

git config --global user.name "Oleg Kasyanov"

git config --global user.email dev@mobicms.net

2) Сгенерируйте свой персональный SSH ключ (если конечно этого не сделали раньше).
В начале проверим, есть ли уже установленные ключи, для этого в Bash консоли набираем следующую команду:

Если ключ уже установлен, покажет список, в котором должны быть пункты: id_rsa, id_rsa.ppk, id_rsa.pub.
Если данные пункты есть, то ключи уже установлены, если нет, то генерируем новые (опять через консоль, свой Email указываем тот же, что и выше):

ssh-keygen -t rsa -b 4096 -C "dev@mobicms.net"

Жмем enter. Далее, спросит куда сохранять ключи, для Windows это будет Enter file in which to save the key (/c/Users/Oleg Kasyanov/.ssh/id_rsa):
Оставляем все как есть и просто жмем Enter

Далее спросит, хотите ли установить пароль. Тут все зависит от Вас. Я лично паролем не пользуюсь, ибо потом задолбает при каждом комите.
Если пароль нужен - вводим его и жмем Ентер, если не нужен, ничего не вводим и жмем Ентер.
Длее попросит повторить пароль. Если вводили, то повторите его, если нет, просто жмите Ентер.
Ключи готовы.

ВНИМАНИЕ!
Ключ - это Ваш пароль к репозиториям. Обязательно сохраните копию ключей в надежном месте.
Для этого зайдите в папку C:\Users\Ваше_Имя
Там увидите папку .ssh
Скопируйте ее всю в надежное место. Если вдруг потом придется переинсталлировать Windows, то просто скопируйте из резерва папку .ssh

3) Для того, чтоб использовать Ваш персональный SSH ключ с репозиторием, Вам надо открыть в каком нибудь текстовом редакторе файл id_rsa.pub который находится в вышеупомянутой папке .ssh и скопировать его содержимое (длинная строка с символами) в соответствующее поле настроек Вашего репозитория.
После этого станет очень удобно, Вам не придется при каждом доступе к репозиторию вводить логин и пароль, будет действовать Ваш персональный ключ.
Ключ можно получить не открывая файл, а воспользовавшись Bash консолью:

Ключ будет скопирован в буффер обмена и вы его сможете вставить в настройки репозитория.
---
На этом основные настройки Git закончены.
Если хотите воспользоваться продвинутыми настройками (а их великое множество), ищите описание в Интернете, это выходит за рамки данной статьи.
Для большинства хватит и базовых настроек.
Изм. AlkatraZ (17.08.2015 / 15:55) [1]

Под конец, немного поковыряем TortoiseGIT.
В принципе, в нем самом хоть и есть куча настроек, ничего такого ковырять не придется, он сам подцепит все настройки, что мы сделали выше.
Но для нормальной работы, нам придется подковырять саму Windows и устранить (при желании) одну проблему.
Сама проблема заключается в отображении оверлейных иконок.

Что это за иконки?
Когда откроете в проводнике Ваш GIT проект, над каждым файлом будет значек, показывающий статус файла (актуален, изменен, игнорируется и т.д.).
Очень удобно и информативно.

Проблема заключается в том, что Windows Shell может отображать только 10 зарегистрированных оверлеев.
Но есть куча программ, которые пихают туда свои настройки, не обращая внимание на уже имеющиеся, в итоге получаются конфликты, точнее Windows показывает только первые 10 иконок из всех зарегистрированных.
К сожалению TortoiseGIT садится всегда где-то в конце и в итоге его иконки не видны.
как исправить - читайте далее.
Изм. AlkatraZ (17.08.2015 / 01:46) [1]

(82.26 кб.)
Скачано: 93 раз

Исправляем overlay Icons
Для этого нам придется немного поковырять Windows Registry. Чтоб сильно не париться, поступите так:

1) Откройте проводник файлов.
2) На любой папке щелкните правой клавишей мыши, в контекстном меню выбираем пункт TortoiseGit -> Settings
3) Откроется большое меню настроек, но мы там НИЧЕГО НЕ ТРОГАЕМ! В дереве настроек выбираем Icon Overlays -> Overlay Handlers
4) На страничке Overlay Handlers увидите кнопку "Start registry Editor", жмите ее, откроется редактор реестра и сразу в нужном месте (пункт ShellIconOverlayIdentifiers).
5) Чтоб ничего не напортачили и была возможность откатиться назад, в редакторе реестра щелкаем правой клавишей на нашей папке реестра ShellIconOverlayIdentifiers и выбираем пункт Export. Экспортируем настройки в файл. Потом, если захотите все вернуть назад, просто два раза кликните по файлу и все ключи запишутся обратно в реестр.

А вот далее, придется чем-то пожертвовать.
В качестве оверлеев обычно зарегистрированы различные облачные сервисы (DropBox, Google Drive, Yandex диск, SkyDrive и прочая муть).
Нам придется удалить из папки реестра ShellIconOverlayIdentifiers ВСЕ ключи, кроме *Tortoise***
На работе облачных сервисов это никак не скажется, просто в проводнике для них не будут отображаться оверлеи. Хотя полюбому, из-за ограничений, если у вас стоит несколько облак, какие-то из них и так отображались без оверлеев.
Для разработчиков (коими мы и являемся) смело можно пожертвовать облачными оверлеями в пользу TortoiseGit, оно того стоит.

Единственная проблема у Вас может возникнуть с выпилом ключей от SkyDrive, он зараза садится под системным экаунтом и просто так удалиться не даст.
Но мы не дураки, и знаем как это сделать
(далее описываю для Windows 10, которая под рукой и в которой возникает проблема с выпиливанием skyDrive)
1) Правой клавишей щелкаем на ключе SkyDrive который хотим удалить
2) В менюхе выбираем пункт Permissions и в нем жмем кнопарь "Advanced"
3) Вверху открывшегося окна видим строку Owner: (там будет или SYSTEM, или TrustedInstaller) и ссылка "change" которую и жмем.
4) В открывшемся окне жмем расширенный поиск, находим группу Administrators и добавляем ее как владелька.
5) Возвращаемся в список разрешений, находим группу Administrators, что мы добавили выше, редактируем и ставим все права.
6) Закрываем окно Permissions и далее, ключ уже можно будет удалить.
Эту процедуру придется проделать для каждого ключа SkyDrive, пока не удалите все.

Далее, закрываем реестр, перезагружаем Windows и система готова к работе.
===
UPD:
В последнем большом обновлении Windows 10, что пришло в этом году, видать исправили Overlay Handler, по крайней мере у меня лично совместно работают TortoiseGit и Dropbox, причем оверлейные иконки видны в обоих программах.
Если у Вас последняя версия (обновленная) Windows 10 и оверлеи видны, то инструкции из этого поста можете не выполнять.
Изм. AlkatraZ (03.02.2016 / 12:43) [2]

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

# Swank (17.08.2015 / 01:47)
AlkatraZ, Ну по кол действий это да, я обычно просто захожу на vps по ssh и там юзаю git, а на интерфейс как-то пофиг Если ты юзаешь GIT исключительно через консоль, то и без всякой виртуалки можешь поставить только GIT без Гуя и будет то же самое.

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

К примеру, самым лучшим и распространенным графическим клиентом для SVN является TortoiseSVN.
как раз на основе него и был написан TortoiseGit и что хорошо, очень качественно перенесены все возможности этой оболочки + добавлены свои, специфические для GIT.

AlkatraZ, скрин чт оли бы подробный, как это выглядет, просто у меня все свилось на установке софтины и ввода логина и мыла в консоли, генерацию ключей и прочей ересью занимается софт
скрин прикрепляю, так как не пробовал разные, что посоветовали, то и поставил, привык

(179.71 кб.)
Скачано: 100 раз

# Koenig (17.08.2015 / 01:52)
AlkatraZ, скрин чт оли бы подробный, как это выглядет, просто у меня все свилось на установке софтины и ввода логина и мыла в консоли, генерацию ключей и прочей ересью занимается софт
скрин прикрепл Не, все эти клиенты и есть ересь.
Они неудобные и многие из них пытаются собой заменить нативный GIT, из-за чего могут возникнуть проблемы с IDE.

Я же предлагаю 100% нативный (оригинальный) вариант GIT с удобной графической оболочкой (которую кто не хочет, может не ставить).

# Koenig (17.08.2015 / 01:52)
AlkatraZ, скрин чт оли бы подробный, как это выглядет, просто у меня все свилось на установке софтины и ввода логина и мыла в консоли, генерацию ключей и прочей ересью занимается софт
скрин прикрепл А скрин я дал выше.
Он именно так и выглядит (пример из проводника файлов, только с оверлеями). там в контекстном меню появится пункт TortoiseGit где все и делается.

У TortoiseGit нет своей оболочки. Он встраивается в Windows Shell, что очень здорово, ибо оверлейные иконки и контекстное меню отображается и в файл-проводнике Windows и в любой софтине, которая имеет файловое окно. К примеру почти все Виндовые РНР редакторы это отлично используют (кроме Java редакторов, типа PhpStorm, NetBeans, Zend Studio и др.). Я имею в виду именно Виндовые проги, типа Nusphere PhpEd и другие подобные редакторы.
Изм. AlkatraZ (17.08.2015 / 02:00) [2]

Другие статьи

Giggle: графический интерфейс для Git

Библиотека сайта или "Мой Linux Documentation Project"

Giggle: графический интерфейс для Git

Оригинал: "Giggle: A Git GUI"
Автор: Jake Edge
Дата публикации: June 2nd, 2010
Перевод: Н.Ромоданов
Дата перевода: июнь 2010 г.

В течение примерно пяти лет, пока повсюду шло распространение распределенной системы контроля версий Git, она получила достаточное количество приверженцев. Но по своей сути, Git ориентирована на использование в командной строке, что не всегда нравится всем его пользователям. В течение всего этого времени для Git создавались различные графические интерфейсы, в том числе два инструментальных средства на базе Tcl/Tk. которые поставляется совместно с Git. Пакет Giggle является графической оболочкой для Git, созданной на основе GTK+, версия с номером 0.5 которой была выпущена в апреле этого года.

Вместе с Git поставляются два инструментальных пакета, которые предназначены для выполнения двух различных задач: gitk предназначен для просмотра репозитария, тогда как git-gui предоставляет возможность изменять содержимое репозитария с помощью операций закоммичивания файлов, слияния, создания версий и т.д. Их комбинация обеспечивает достаточно полные функциональные возможности доступа к Git, но из-за того, что его пользовательский интерфейс, сделан на основе Tcl/Tk, не хватает наглядности. Кроме того, эти пакеты не интегрирутся с рабочим столом GNOME, как визуально, так и функционально, что пытается сделать пакет Giggle (и другие пакеты).

В Giggle сочетаются в одной программе средства просмотра репозитария и функции его изменения, но набор функций, используемых для изменения, все еще отстает от имеющихся в git-gui. В Giggle есть два режима: "Browse" ("Обзор") - для дерева исходных кодов и "History" ("История") - для просмотра операций коммит, выполняемых в репозитарии.

В режиме просмотра имеется три панели просмотра: слева - дерево исходного кода, в верхней части справа - содержимое выбранного файла и в нижней части справа - журнал и графом историй версий. Если в разделе историй версий щелкнуть по более ранней версии, информация в панели, изображающей содержимое файла, как и следует ожидать, изменится. Вдобавок в панели с содержимым файла будет появляться всплывающее окно с информацией о том, когда и какие строки добавлялись, т.е. по существу, у вас имется эквивалент команды git blame .

В режиме просмотра также есть возможность использовать другие операции, такие как редактирование или коммит файлов, создание ветви или патча и т.д. Двойной щелчок по имени файла вызовет переход в режим редактирования, хотя, как выбирается конкретный редактор, напоминает головоломку. Для репозитария ядра Linux в качестве подходящего выбирается редактор Emacs, но для кода для сайта LWN, в качестве подходящего выбирается редактор KWrite. Можно предположить, что последний берется из недр настроек KDE как вариант редактора, используемого по умолчанию, но неясно откуда берется Emacs — возможно, сыграло свою роль использование различных языков реализации (Python вместо C).

Это указывает на еще одну из причин, из-за которой Giggle довольно трудно использовать: отсутствие какой-либо документации. Можно просто щелкнуть мышкой и увидеть, что произошло, но небольшое руководство для пользователей было бы к месту. Кроме единственного способа выяснить, как работает пакет Giggle - "щелкнуть мышкой и увидеть", у него есть другой большой недостаток: производительность.

Производительность Giggle довольно слаба, особенно если учесть, что в инструменте, для которого предназначен этот пакет, определенное внимание уделяется скорости работы. На запуск Giggle для репозитария ядра Linux прежде, чем появится интерфейс, которым можно будет пользоваться, тратится 15-20 секунд при 99% загрузки процессора. Это можно было бы как-то объяснить при использовании огромного репозитария с большим количеством файлов и версий, таким как ядро Linux, но ситуация точно такая же и в случае с репозитарием гораздо меньшего размера.

Дело не только в том, что запуск пакета медленный. Переход из режима просмотра в режим истории может иногда занять до 10 секунд. При прокрутке истории пакет Giggle может на некоторое время перейти в паузу из-за недостатка ресурсов процессора. В целом, от практического использования пакета сложилось достаточно тягостное впечатление, особенно в сравнении с gitk. который работает достаточно быстро. В течение часа использования Giggle, пакет несколько раз прекращал правильно работать и зависал.

В режиме просмотра истории создается журнал git log. который вместе графом, отслеживающим коммиты, выдается на панели в верхней части графического интерфейса. Как только выбирается операция коммита, внизу слева указываются файлы, на содержимое которых повлияет эта операция. После этого можно выбрать любой из этих файлов и в нижней правой части окна будет видно, как файл изменится. Отсутствует возможность подробного сравнения старой и новой версий такая, как есть в других инструментальных средствах, - она могла бы быть приятным дополнением.

С момента создания проекта в январе 2007 года в него постоянно добавляются новые функции. В последнее время релизы выпускаются довольно часто, а с января этого года — более или менее ежемесячно, но перед этим в течение почти года проект находился в состоянии стагнации. Пока неясно, каковы планы для релиза 0.6 и далее, хотя в списке открытых вопросов (list of open issues ), указаны некоторые идеи, касающиеся ошибок и возможностей, которые, вероятно, будут реализовываться.

Есть и другие довольно активно разрабатываемые пакеты графического интерфейса для Git, в том числе пакет git-cola. разрабатываемый на основе Python/Qt4, и пакет gitg. в котором также используется GTK+. В последнем пакете внимание также уделяется клиентам Git для Windows и MacOS, тем самым делается попытка реализовать согласованный интерфейс к Git для всех трех платформ. В частности, особое внимание уделяется интерфейсу GitX для MacOS X.

Помимо чисто визуальной привлекательности (а графический интерфейс Tk, безусловно, имеет довольно неуклюжий вид), создается впечатление, что в действительности Giggle и другие графические интерфейсы для Git не дают ничего существенно большего, чем делают пакеты gitk и git-gui. Это можно объяснить довольно медленными темпами развития этих инструментов, поскольку каждому, кому действительно нужен графический пользовательский интерфейс для Git, уже что-то имеет под рукой. Также вероятно, что автономный графический интерфейс менее интересен для тех, кто привык к интегрированным средствам разработки (IDE), таким как Eclipse.

В конечном счете, предполагается, что графический интерфейс должен упростить использование инструмента, но Giggle очень мало способствует тому, чтобы Git стал более доступным. Пользователю, по-прежнему необходимо получить некоторый объем знаний, касающийся Git, с тем, чтобы использовать инструмент эффективно. Но как только он его получит, использование командной строки не будет вызывать больших затруднений.

Эта статья еще не оценивалась

Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь .
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют

Git меняет правила игры в распределенной Web-разработке

Git меняет правила игры в распределенной Web-разработке

Системы управления версиями (version control systems, VCS) предоставляют механизм внесения изменений в файлы проекта и управления ими и широко используются в командной разработке ПО, документации и других онлайновых проектах. Системы VCS важны для проектов разработки не меньше, чем системы резервного копирования, так как они позволяют множеству пользователей фиксировать изменения в одних и тех же файлах проекта, не рискуя при этом случайно перезаписать изменения своих коллег.

Часто используемые сокращения
  • CSS: каскадные таблицы стилей (Cascading Style Sheet)
  • GUI: графический интерфейс пользователя (Graphical user interface)
  • HTML: язык разметки гипертекста (Hypertext Markup Language)
  • HTTP: протокол передачи гипертекста (Hypertext Transfer Protocol)

Даже если бы Линус Торвальдс не разработал ядро операционной системы Linux®, возможно он все равно был бы так же известен благодаря созданию системы управления версиями Git. Разработка таких сложных проектов, как Linux, обеспечивает тестирование системы VCS в экстремальных условиях, поэтому неудивительно, что Git быстро стала стабильной, мощной и гибкой системой.

В Linux и UNIX® применяется чрезвычайно много систем VCS, начиная от таких динозавров, как RCS и CVS и заканчивая современными системами, такими как Subversion, Mercurial, Bazaar, Arch и Darcs. По иронии судьбы (особенно по отношению к Linux), Git была разработана для замены коммерческой VCS BitKeeper, которая обладала впечатляющими уникальными возможностями и имела бесплатную версию. BitKeeper все так же является впечатляющей системой, но изменения в схеме ее лицензирования, в конце концов, вынудили Торвальдса искать альтернативу, и, в лучших традициях свободного ПО, он решил написать свою собственную VCS. Как и ядро Linux, Git теперь является продуктом расширений, исправлений и иного участия в нем несчетного числа разработчиков ПО с открытым кодом.

Благодаря своей мощи и бесплатности Git быстро распространяется в открытых проектах и научных организациях. В корпоративных и научных средах Git может приносить пользу как VCS и как платформа для совместной работы. Это привело к тому, что Git применяется во множестве нетрадиционных для VCS проектов, не связанных с управлением исходным кодом. Как рассказывается в этой статье, Git особенно полезна в сложных, распределенных проектах Web-разработки, со сформулированными требованиями к содержимому и к коду, а потому требующих постоянного взаимодействия различных людей.

Git: больше, чем просто VCS

Git была создана для того, чтобы тысячи разработчиков, находящихся в различных точках земного шара и обладающих разного качества подключением к Интернет, могли совместно работать над одним проектом, не сталкиваясь с серьезными проблемами производительности или доступа. Эти фундаментальные требования поддерживаются в Git благодаря следующим важным аспектам:

  • Использование центрального репозитория с одновременным предоставлением каждому разработчику полной копии исходного кода проекта. Это гарантирует, что все разработчики могут выполнить свою работу независимо от текущего состояния своего соединения.
  • Обеспечение быстрой и надежной поддержки создания внутри проекта отдельных рабочих пространств, называемых ветвями. и слияний. т.е. распространения изменений из одной ветви проекта в другие. Ветви облегчают поддержку различных версий пакета, независимо от того, являются ли эти версии постоянными или же они созданы для экспериментов. Слияния являются ключевым аспектом всех систем управления версиями, а особое распространение они имеют в VCS, ориентированных на ветви.
  • Реалзация легкого обмена изменениями в ветвях и коде между группами разработчиков без необходимости занесения этих изменений в центральный репозиторий.

Эти архитектурные решения и их реализация являются ключевыми аспектами успеха Git и удобства его использования. Конечно же, Git также удовлетворяет стандартным требованиям к VCS по неизменяемости и подотчетности. Неизменяемость означает, что изменения, будучи добавлены в репозиторий, становятся неотъемлемой частью истории проекта. Хотя изменения впоследствии могут быть удалены (так называемый reverting – отмена изменений), тем не менее, и изменения, и удаление этих изменений являются неотъемлемой частью истории проекта. Подотчетность означает, что можно легко отследить, кто и когда внес определенные изменения. Для чего было сделано изменение, может оставаться загадкой (хотя при внесении изменений необходимо заполнять комментарий), но, по крайней мере, всегда можно узнать, кого об этом следует спросить.

Git использует внутренний индекс для отслеживания состояния файлов и директорий в репозитории. Также, для облегчения последующих обновлений, она хранит объекты, отражающие сделанные в этих файлах и директориях изменения. Индекс и объекты изменений отличаются от фактических файлов и директорий, представленных в локальном репозитории. Такая модель позволяет легко определять изменения, которые сделаны локально в файлах и директориях, и еще не занесены в локальный репозиторий или удаленный центральный репозиторий (если такой имеется). Некоторые команды Git работают с индексом, в то время как другие работают с фактическим содержимым файлов и директорий, поэтому иногда использование неподходящей команды может привести к непониманию, почему же файлы не обновились.

Устанавливаем Git

Пакеты Git доступы в репозиториях большинства дистрибутивов Linux. В Ubuntu, Debian и других системах, использующих формат пакетов .deb, нужно установить пакет git-core В системах, работающих с RPM-пакетами, таких как Fedora, Red Hat, Centos, SUSE и Mandriva, основной пакет Git называется просто git. Базовый пакет Git также требует, чтобы в системе были установлены Perl, библиотеки Perl для шифрования и обработки исключений, а также утилита patch.

При желании получить самую последнюю версию Git для Linux, можно заглянуть на Web-сайт Git, на котором доступны пакеты .deb и RPM, а также последний исходный код Git (если вы хотите собрать свою собственную версию). На сайте Git также доступны скомпилированные версии Git для Mac® OS X, Windows®, Cygwin под Windows и Solaris® от Sun/Oracle. В настоящее время администраторам операционных систем IBM® AIX® и Hewlett-Packard® HP-UX приходится самостоятельно собирать Git для своей платформы из исходного кода. За информацией о получении и сборке Git обращайтесь к разделу Ресурсы.

Основной пакет Git содержит исполняемый файл git и несколько дополнительных приложений. Как можно ожидать, также доступно огромное количество других связанных с Git пакетов. Некоторые из наиболее популярных пакетов перечислены ниже:

  • git-cola. Графический интерфейс (GUI) для работы с файлами и директориями в репозитории Git.
  • git-doc. Устанавливает локальную копию справочника пользователя, руководства и документации.
  • git-gui. Графический интерфейс для работы с репозиториями Git и навигации по ним; использует пакет gitk.
  • git-web. Основанный на Web графический интерфейс работы с репозиториями Git.
  • gitk. Простой графический интерфейс для работы с репозиториями Git и навигации по ним.
  • qgit. Основанное на Qt графическое приложение для просмотра и исследования репозиториев Git.

Пакеты git-gui, git-web, gitk и qgit предоставляют схожую функциональность, хотя git-web основан на Web, в то время как остальные запускаются локально. Любой из этих пакетов может быть полезен при начале работы с Git, хотя возможно пакет git-web является наилучшим выбором в распределенной среде разработки.

Если вам интересно поэкспериментировать с Git, но вы уже работаете с другой системой VCS, вам могут оказаться полезными следующие пакеты:

  • git-cvs. Этот пакет обеспечивает взаимодействие репозиториев Git и CVS, позволяя импортировать CVS-репозитории и историю изменений в Git, вести работу в Git, вносить изменения обратно в CVS-репозиторий, а также импортировать обновления из CVS-репозитория.
  • git-svn. Этот пакет обеспечивает взаимодействие репозиториев Git и Subversion, позволяя импортировать Subversion-репозитории и историю изменений в Git, вести работу в Git, вносить изменения обратно в Subversion-репозиторий, а также импортировать обновления из Subversion-репозитория.
Основные команды Git

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

Аналоги команд Git

В старых версиях Git также были установлены аналоги многих команд Git в форме git-command. где command обозначало некоторую команду Git. Таким образом, например, команду push можно было выполнить как git push или git-push. Эта функциональность была полезна в начале развития Git, когда множество дополнительных команд Git находились в активной разработке, так как она предоставляла синтаксическую возможность выполнять как команды, находящиеся в главном исполняемом файле Git, так и команды, которые еще были внешними. Теперь, когда Git стала более зрелой и стабильной, эта функциональность уже не нужна.

Посмотреть список основных команд Git можно выполнив команду git без аргументов. Вот часть команд, которые будут показаны в этом списке:

  • add . Добавляет к индексу Git новый файл. Для фактического добавления этого файла в репозиторий Git в дальнейшем нужно выполнить его фиксацию (commit).
  • branch . Позволяет вывести список ветвей, копии которых у вас есть, определить, в какой ветви вы сейчас работаете, создать новые ветви или удалить локальную копию ветвей, которые вы создали или извлекли из репозитория. Эта команда не может переключить вас в другую ветвь. Для переключения надо использовать команду checkout.
  • checkout . Эту команду можно выполнить для ветви или файла/директории. Если ее выполнить для какой-либо ветви, эта ветвь становится вашей рабочей ветвью. Если ее выполнить для какого-либо файла или директории, то этот файл или директория будут обновлены до текущей версии, находящейся в репозитории в вашей рабочей ветви. Также с помощью этой команды можно создать новую ветвь, которая будет основана на указанной существующей ветви, и, возможно, будет отслеживать изменения относительно нее.
  • commit . Записывает (фиксирует) изменения файлов и директорий в индекс Git. Можно указать файлы и директории, изменения в которых мы хотим зафиксировать, с помощью параметра -a добавить все имеющиеся изменения в файлы, отслеживаемые Git, или с помощью параметра --interactive выбрать изменения в файлах и директориях, которые мы хотим зафиксировать за один раз. (Последний вариант может быть особенно полезен, если вы работаете над несколькими задачами, включающими большое количество файлов, но хотите зафиксировать некоторые изменения совместно. Фиксации производятся в локальный репозиторий, если же вы используете удаленный центральный репозиторий, то для того, чтобы опубликовать на нем свои локальные изменения, нужно использовать команду push .)
  • diff . Отображает различия между локальным файлом и его версией, зафиксированной в репозитории или между двумя различными версиями файла, зафиксированными в репозитории. Эта команда чаще всего используется просто с указанием имени файла, чтобы отобразить различия между указанным файлом и его версией, находящейся в репозитории в текущей ветви.
  • fetch . Извлекает обновления индекса из другого репозитория, после чего идентифицирует вновь созданные метки и оповещает о том, какие изменения в файлах и директориях, имеющиеся в репозитории, отсутствуют в локальной копии. Далее можно просмотреть доступные изменения с помощью команды git log. Для фактического извлечения файлов из репозитория следует использовать команду git pull или git rebase.
  • grep . Ищет в файлах текущей ветви соответствия указанному шаблону и отображает их. Эта команда поддерживает большинство параметров обычной команды grep от GNU.
  • log . Показывает журнал фиксаций для текущей ветви или для определенных файлов текущей ветви.
  • merge . Выполняет перенос (слияние) изменений, сделанных в одной ветви, в другую ветвь. Эта команда предоставляет параметр, позволяющий либо автоматически занести изменения, либо перед принятием изменений просмотреть, как будет выглядеть обновленная версия.
  • mv . Переименовывает файл, директорию или символическую ссылку, отслеживаемую Git.
  • pull . Извлекает обновления индекса из другого репозитория и вносит соответствующие изменения в файлы и директории текущей ветви.
  • push . Обновляет индекс удаленного репозитория в соответствии с локальным индексом и информацией об изменении объектов.
  • rebase . Обновляет рабочую ветвь в соответствии с удаленной ветвью и изменяет все не опубликованные в удаленной ветви локальные фиксации таким образом, чтобы они могли быть применены к текущему состоянию удаленной ветви. Это мощная, но потенциально опасная команда, потому что она при необходимости буквально перезаписывает фиксации, так чтобы можно было выполнить слияние. В зависимости от частоты и размера изменений, производимых на удаленном репозитории, зачастую использование обычной команды git pull является предпочтительным.
  • rm . Удаляет файл, директорию или символическую ссылку, отслеживаемую Git.
  • stash . Временно переносит все текущие изменения в стек и возвращает текущую рабочую ветвь в изначальное состояние. Команда git stash save сохраняет текущие изменения в локальный стек, а git stash apply извлекает их и повторно выполняет. Это может быть полезным, когда вы хотите извлечь изменения из удаленного хранилища или выполнить rebase, не фиксируя при этом находящиеся в работе изменения.
  • status . Показывает статус текущей ветви, идентифицируя не занесенные в репозиторий изменения, не отслеживаемые файлы и т.д.

Любую команду Git можно вызвать с параметром --help. чтобы получить по ней детальную информацию, список аргументов, которые можно ей передать и т.д. Также получить справку по любой команде Git можно с помощью команды формата git help command.

Чтобы ознакомиться с полным списком команд Git, выполните команду man git. которая отображает справочную информацию по Git.

Создаем новый проект Git

Чтобы начать использовать Git для существующего проекта, который не использует никакой системы управления версиями, выполните следующие шаги:

  1. Перейдите в директорию, содержащую исходный код проекта:
  • С помощью команды git init создайте в текущей директории пустой репозиторий:
  • Теперь с помощью команды git status можно проверить статус нашего нового проекта.

    Эта команда помечает всё, находящееся в текущей директории как untracked, что означает, что Git не получал инструкций отслеживать эти файлы и директории, хотя он знает об их существовании:

  • Добавляем файлы и директории проекта в новый репозиторий Git.

    Их можно либо перечислить явно, либо указать с помощью точки (. ),которая традиционно обозначает содержимое текущей директории:

  • Выполним команду git status еще раз, чтобы убедиться, что все файлы и поддиректории текущей директории были добавлены в новый проект:
  • Выполним команду git commit. чтобы зафиксировать в репозитории начальные версии файлов.

    Если не указать комментарий к изменению в командной строке с помощью параметра –m -m "commit message ". то в процессе выполнения команды commit будет запущен текстовый редактор по умолчанию, в котором вам нужно будет ввести комментарий к вносимому изменению. Сохранив комментарий и закрыв текстовый редактор, Git заносит изменение в репозиторий и выводит информацию о выполненном изменении и измененных файлах.

    Теперь все готово к тому, чтобы начать работать с файлами проекта в Git с помощью описанных выше команд.

    Настраиваем центральный репозиторий

    Если создавать репозиторий так, как описано в этом разделе, то затем необходимо иногда загружать (pull) в свой репозиторий изменения, сделанные другими пользователями или обновлять (check out) файлы ветви после того, как другие пользователи сами опубликуют (push) в ней свои изменения. В разделе Распределенная Web-разработка с использованием Git рассказывается о настройке центрального репозитория, не содержащего рабочей копии файлов проекта (т.е. хранящего только индекс), и благодаря этому не имеющего такой проблемы.

    Делаем изменения в существующем проекте Git

    Если вы хотите начать вносить свои изменения в уже созданный кем-либо проект Git, то в этом случае все еще проще. Нужно лишь с помощью команды git clone создать свою собственную рабочую копию проекта:

    В этом примере мы создаем копию проекта maps в своей текущей директории. Далее можно перейти в свою копию проекта и с помощью описанных выше команд начать работать с его файлами.

    Клонируем проект Git

    Клонирование проекта Git, находящегося на удаленной машине также выполняется просто. Git по умолчанию поддерживает протоколы Secure shell (SSH) и HTTP, а также может использовать свой собственный необычайно эффективный протокол git. если на удаленной машине запущен демон Git, и этот демон экспортирует нужный проект. По умолчанию Git использует SSH, поэтому синтаксис клонирования удаленного репозитория выглядит так, как и можно было ожидать:

    Замечание: Для клонирования проекта Git с помощью SSH необходимо иметь аутентифицированный доступ к удаленной системе, что является хорошим аргументом для использования протокола git. даже несмотря на то, что для его работы необходимо запускать демон Git.

    Распределенная Web-разработка с использованием Git

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

    Чтобы при публикации изменений выполнялось обновление файлов, нужно создать так называемый пустой репозиторий—– т.е. репозиторий, не имеющий рабочей копии ваших файлов, но содержащий индекс Git, объекты, отражающие изменения этого индекса и другие файлы, необходимые Git. Так как пустой репозиторий не содержит рабочей копии ваших файлов, то в нем никто не может работать, и он служит просто точкой сбора изменений, поступающих от всех разработчиков, работающих над проектом.

    Выполним следующие шаги, чтобы создать на Web-сервере репозиторий Git с содержимым нашего Web-сайта, в котором вы и остальные разработчики можете публиковать изменения. Эта процедура также заменяет существующую локальную директорию, хранящую содержимое Web-сайта, директорией с содержимым из нашего нового репозитория Git, которая будет автоматически обновляться каждый раз при внесении изменений в этот репозиторий совместного доступа. Это можно сделать множеством способов. Этот пример намеренно сделан легким для выполнения и поэтому в него включено только HTML содержимое нашего Web-сайта. По тем же самым принципам можно работать с любой другой частью Web-сайта.

    1. Зайдем на наш Web-сервер с помощью SSH и перейдем в директорию с содержимым нашего Web-сайта.

    Если содержимое сайта еще не отслеживается Git, настроим здесь репозиторий Git, используя процедуру, описанную в предыдущем разделе. Например:

  • Переместимся в категорию уровнем выше и создадим пустой репозиторий Git, клонировав только что созданный проект:

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

  • Переименуем существующую Web-директорию и создадим новый проект Git с таким же именем, клонировав наш пустой репозиторий:

    Директория нового проекта содержит полученную из репозитория версию всех файлов проекта Git, хранящего содержимое нашего Web-сервера.

  • Отредактируйте (или создайте) в поддиректории hooks пустого репозитория сценарий, который после каждого обновления будет вносить соответствующие изменения в только что созданную директорию.

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

    Этот сценарий должен выглядеть примерно так, как показано в листинге 1.

    Листинг 1. Сценарий действий после обновления репозитория

    Обратите внимание, что этот сценарий должен использовать интерпретатор /bin/bash, так как он работает с его встроенными командами pushd и popd. Если сценарий действий после обновления уже существует, можно, убедившись, что он использует правильный интерпретатор, просто добавить в его конец текст нашего сценария. Также необходимо убедиться, что в существующем сценарии нигде не используется команда exec. которая остановит дальнейшее выполнение скрипта.

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

    • Можно работать над файлами в локальной версии Web-сайта, а затем публиковать свои изменения непосредственно в центральном репозитории совместного доступа.
    • Ваш коллега командой pull может получать от вас изменения, которые вы зафиксировали в своем локальном репозитории. Такой прием позволяет совместно работать над файлами перед их публикацией в центральном репозитории, а значит и на вашем Web-сайте.

    Хотя Git намного быстрее большинства систем VCS, ее навряд ли стоит использовать непосредственно на работающей версии Web-сайта, если вы работаете над большим, сложным и интенсивно используемым сайтом. Посетители сайта могут столкнуться со случаями, когда часть файлов сайта уже обновилась, а другая часть - еще нет. Особенно проблематичная ситуация может возникнуть при загрузке страницы, уже использующей обновленную таблицу стилей CSS, когда это обновление еще не получено. Такие проблемы можно легко предотвратить, если хранить старое и новое содержимое сайта в разных каталогах, а каталог, с которым Web-серверу следует работать, указывать символической ссылкой или в конфигурационном файле, которые можно легко поменять, когда вы захотите, чтобы ваш сайт начал работать с новым содержимым.

    Заключение

    Git - это мощная, гибкая VCS, которая предоставляет распределенной команде широкие возможности для сотрудничества. Git позволяет вести совместную разработку, в том числе разработку Web-сайтов, Web-приложений и т.д. используя новые подходы. Время, потраченное на понимание ее работы и изучение часто используемых команд, окупится сполна.

    Ресурсы Научиться
    • Ознакомьтесь с оригиналом статьи: Git changes the game of distributed Web development (EN, developerWorks, август 2009 г.).
    • Справочник пользователя Git. здесь можно найти детальную информацию о применении Git в управлении проектами разработки (EN).
    • Магия Git. почерпните из этой бесплатной онлайновой книги подробную информацию об использовании Git для управления проектами разработки (EN).
    • Руководство Git. ознакомьтесь с кратким практическим руководством по началу работы с Git (EN).
    • Управление исходным кодом с помощью Git (Эли М. Доу, developerWorks, июль 2006 г.): в этой статье приведено краткое введение в процедуру сборки Git и его использование на примере исходного кода ядра Linux
    • Домашняя страница Git. здесь можно найти последнюю версию Git а также ссылки на дополнительные ресурсы, посвященные этой программе (EN).
    • По ссылке ниже можно ознакомиться с информацией по сборке Git на системах AIX, HP-UX и Solaris (EN).
    • Следите за новостями в разделе технических мероприятий и Web-трансляций (EN) developerWorks.
    Получить продукты и технологии
    • Загрузите Git. здесь доступны версии Git для Cygwin, Linux, Mac OS X, Solaris и Windows (EN).
    • Загрузите ознакомительные версии продуктов IBM и получите практический опыт с инструментами разработки и связующим ПО от DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.
    Комментарии