Настройка smartgit на windows

Обновлено: 06.07.2024

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

В общем, под катом статья, как используя SmartGit и BitBucket можно улучшить свою жизнь начинающего разработчика.

М аленький план того, что мы будем делать:

  1. Создание репозитория на Bitbucket и клонирование репозитория (добавление его в SmartGit).
  2. Создание комитов.
  3. Отмена изменений.
  4. Создание веток.
  5. Проталкивание веток на удаленный репозиторий (аплоад веток на удаленный сервер).
  6. Слияние веток.

Вначале над создать удаленный репозитарий. Создание репозитория - это очень простая задача. В качестве удаленного репозитория мы будем для пользоваться BitBucket, поэтому нужно иметь там аккаунт. После регистрации жмем кнопку «Create» и заполняем необходимые поля. Возьмем ссылку на наш репозиторий. После этих действий можно создать клон этого репозитария на локальной машине.

Запустим SmartGit, выберем «Project» — «Clone» (или Ctrl + Alt + O) и заполним необходимые поля:


Система запросит ваш логин и пароль от Bitbucket:


В следующем окне доступны две опции клонирования «Include Submodules» и «Fetch all Heads and Tags». Git позволяет отдельные модули приложения хранить в разных репозиториях. Если вы отметите опцию «Include Submodules» — SmartGit автоматически подгрузит все модули. Если отметить опцию «Fetch all Heads and Tags», то SmartGit после создания папки проекта скачает все ветки и теги для данного репозитория:


Далее очень просто — в следующем окне необходимо выбрать директорию, куда клонировать репозиторий. После него появится окно, в котором задается имя проекта в SmartGit. И если вы клонировали пустой репозиторий (как в этой статье), то по завершению увидите следующее окно:


Сохранение измений (т.е. создание коммита)

Идем дальше. Создадим комит. Что такое комит? Это фиксация изменений. Каждый комит «запоминает» что именно вы изменили и в любой момент времени можно вернуть прежнее состояние файлов. Советую вам после каждого значимого изменения, например, исправление бага в функции, делать комит. Что бы создать комит, нужно что-то изменить в проекте. Добавьте парочку файлов в папку с проектом:


Теперь можно увидеть изменения нашего проекта в SmartGit:


Выберем оба файла и нажмем сначала «Stage», а потом «Commit». Зачем нужно нажимать «Stage»? Кнопка «Stage» добавляет в текущий индекс выбранные файлы. Если вы хотите создать комит для двух файлов, а изменили, предположим целых 5, достаточно выбрать эти два файла, нажать «Stage», что добавит их в индекс, а после «Commit». Таким образом только выбранные два файла попадут в комит.


После чего появится окошко, где нужно будет ввести комментарий комита. Обычно туда пишут то, что было изменено, добавлено, удалено и так далее:


После чего следует нажать кнопку «Commit». Кнопка «Commit & Push» делает тоже самое, но еще и проталкивает (заливает) изменения в удаленный репозиторий (в нашей случае это Bitbucket). Пока не стоит этого делать. Проталкиванием мы займемся далее. Внизу, в списке веток, появится локальная ветка «master». Это основная ветка кода приложения. Что такое ветки, расскажу чуть позже.

А сейчас сделаем что-нибудь с нашим проектом, а потом откатим изменения. Я удалю файл readme.txt, отредактирую файл index.php и добавлю новый файл confic.cfg и сделаю коммит.

А теперь откатим изменение после комита. Зайдем в Log:


Выберем комит, к которому хотим откатиться и нажмем «Reset»:


В следующем окне нам предлагают выбрать какой именно «Reset» мы хотим сделать:


Объясню. Вспомните, что при создании комита, вы сначала добавляете файлы в индекс (stage). Это позволяет закомитить только проиндексированные файлы. Soft reset сбрасывает только комиты. Индекс и физические изменения в файлах остаются. Mixed reset работает так же, как и софт, но еще удаляет индекс файлов. Hard reset удаляет комиты, индекс и физические изменения в файлах. Аккуратно используйте hard reset, что бы нечаянно не удалить лишнего.

Я сделал hard reset для наглядности:


Как видите все изменения в файлах пропали, а точнее все вернулось к состоянию первого комита.

Создание новой ветки

Теперь немного о создании веток. Зачем они вообще нужны? Ветка позволяет сохранить текущее состояние кода и безопасно экспериментировать с изменениями в коде. Например, вы пишите новый модуль. Логично делать это в отдельной ветке. Звонит начальство и говорит, что в проекте баг и срочно нужно пофиксить, а у вас модуль не дописан. Как же заливать нерабочие файлы? Просто переключитесь на рабочую ветку без модуля, пофиксите баг и заливайте файлы на сервер. А когда «опасность» миновала — продолжите работу над модулем. И это один из многих примеров пользы веток.

Попробуем создать свою ветку. У нас уже одна есть, это master. Она создается автоматически (если отсутствует) когда вы делаете первый комит. Создадим еще одну ветку и назовем ее «new_future1». Нажмите F7 или правым кликом внизу во вкладке «Branches» на надпись «Local Branches» и в выпадающем списке выберите «Add branch»:


Нажмите «Add branch & Switch» что бы сразу переключиться на созданную ветку. Теперь вы можете создавать новые комиты, изменять файлы и не беспокоиться. Так как у вас всегда есть ветка мастер, в которую можно вернуться. Когда вы переключаете ветку, Git меняет локальные файлы на те, которые есть в этой ветке. То есть, если вы создадите новую ветку поменяете что-то в файле index.php, а потом переключитесь на ветку master то все изменения, произведенные вами будут удалены. Если же переключиться обратно в созданную ветку — изменения вернутся.

Отправка изменений в удаленный репозитарий

До сих пор мы работали локально. Попробуем залить труды нашей работы на сервер. Создадим какой-нибудь комит в ветке new_future1. В случае если репозитарий пуст, а он пуст, так как мы создали его некоторое время назад и на сервер ничего не залили, Bitbucket основной назначает ту ветку, которую залили первой. Поэтому переключимся на ветку «master» и нажмем кнопку «Push»:


. Картинка "Кнопка Push SmartGIt" .


Дальше SmartGit спросит настроить ли отслеживание ветки (cofigure tracking). Отслеживание позволяет автоматически обновлять соответствующие ветки, когда вы скачиваете или загружаете обновления кода. Поэтому смело жмите «Configure»:


Теперь переключитесь на другую ветку и проделайте тоже самое. Зайдем на Bitbucket и посмотрим, что изменилось в разделе «Commits»:



Как видите все попало на удаленный сервер.

Теперь сольем ветки. Зачем это нужно? Возьмем тот же пример с модулем. Рано или поздно вы допишите его и вам нужно будет добавить код модуля в основной код приложения. Достаточно просто слить ветки. Для этого переключитесь на ветку, в которую хотите слить код. В нашем случае это мастер. После чего нажмите правым кликом на ветку, с которой хотите слить код и выберите «Merge»:


Дальше SmartGit спросит каким именно образом нужно слить ветки. Выберите «Create Merge-Commit».


А теперь осталось протолкнуть изменения ветки master на сервер. Заливаем изменение на сервер так же, как мы делали это раньше и получаем:


Вот и все на этот раз. Из-за картинок статья вышла большой. Задавайте свои ответы. Пишите вопросы.

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

Теоретическая часть

История Git

С февраля 2002 года для разработки ядра Linux’а большинством программистов стала использоваться система контроля версий BitKeeper. Довольно долгое время с ней не возникало проблем, но в 2005 году Лари МакВоем (разработчик BitKeeper’а) отозвал бесплатную версию программы.

Разрабатывать проект масштаба Linux без мощной и надежной системы контроля версий – невозможно. Одним из кандидатов и наиболее подходящим проектом оказалась система контроля версий Monotine, но Торвальдса Линуса не устроила ее скорость работы. Так как особенности организации Monatone не позволяли значительно увеличить скорость обработки данных, то 3 апреля 2005 года Линус приступил к разработке собственной системы контроля версий – Git.

Практически одновременно с Линусом (на три дня позже), к разработке новой системы контроля версий приступил и Мэтт Макал. Свой проект Мэтт назвал Mercurial, но об этом позже, а сейчас вернемся к распределенной системе контроля версий Git.

Основные особенности Git

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

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

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

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

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

Это интересно: примерами проектов, использующих Git, являются ядро Linux, Android, Drupal, Cairo, GNU Core Utilities, Mesa, Wine, Chromium, Compiz Fusion, FlightGear, jQuery, PHP, NASM, MediaWiki, DokuWiki, Qt и некоторые дистрибутивы Linux.

GitHub

GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc.


Сервис абсолютно бесплатен для проектов с открытым исходным кодом и предоставляет им все возможности (включая SSL), а для частных проектов предлагаются различные платные тарифные планы. Работает с 2008 года.

Слоган сервиса — «Social Coding» — на русский можно перевести как «Пишем код вместе». На футболках же печатают совсем другую фразу: «Fork you!» («Ответвись!»).

Это интересно: Талисманом GitHub выбран осьмикот (англ. octocat).

Это полезно: внимание, бесплатный аккаунт на GitHub — аккаунт для Open-Source проектов. Вы не сможете закрыть свой код, или скрыть его от других. Не используйте его для проприетарного кода и рабочих проектов!.

Установка

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

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


Практическая часть

Установка SmartGit на компьютере

SmartGit/Hg — кроссплатформенный визуальный клиент системы управления версиями Git, Mercurial и Subversion, который работает на Windows, Mac OS X и Linux.

Это важно: не смотря на то, что поддержка Windows XP не указана вы все равно сможете запустить SmartGit под этой ОС.


Рисунок 2.1 – Сайт TortoiseSVN

Далее, как в лекции № 3.

Контрольные вопросы

1. Для чего при разработке программных систем используются система контроля версий?

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

Наверное, пора узнать…

Секреты командной разработки

Разработка – это почти всегда командная игра. Пора учиться работать в команде.
Даже если пока что в твоей команде только монитор, системник (или старенький ноутбук) и острое желание стать программистом, всё равно пора учиться.

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

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

О системах контроля версий их преимуществах и недостатках можно почитать здесь.
В этой статье мы перейдём от теории к практике и расскажем, как работать с git’ом.

Шаг 1. Выбираем git-хостинг

Git-хостинг на разных условиях предлагают десятки компаний.
Самые известные из них: Github, Sourceforge, Google Code, GitLab, Codebase. Выбери удобный интерфейс и регистрируйся на понравившемся хостинге.
В этой статье мы рассмотрим работу с git-хостингом на примере Github’а.

Процедура регистрации на Гитхабе простая и интуитивно понятная даже для тех, чей уровень английского далёк от Upper Intermediate.


Логин, пароль, почта –> подтверждение, и связь с мировым сообществом программистов налажена.

Шаг 3. Создание репозитория

Ты можешь создать любое количество репозиториев, у каждого из которых будет issue tracking, wiki, условия для проведения code review и многое другое.
Политика разработчиков Github предполагает бесплатное использование хостинга для всех open-source проектов.

Чтобы создать новый репозиторий нажмём кнопку + в верхней части экрана и выберем New repository

Создание репозитория на Гитхабе

Создание репозитория на Гитхабе




Многие разработчики рано или поздно сталкиваются с необходимостью создания приватного репозитория, код из которого доступен только их команде. Для этих случаев на Github’е есть определённый тарифный план.

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


Жмём волшебную кнопку Create внизу экрана, и репозиторий готов.

Шаг 4. Работа с репозиторием

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

Шаг 5. Выбираем Гит-клиент

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

Но вернёмся к git-клиентам.

Самыми популярными гит- клиентами на данный момент являются:

SmartGit


Удобное приложение гармонично сочетает все необходимые функции и доступную интуитивно понятную систему управления. SmartGit – один из самых удобных графических интерфейсов для профессиональной разработки. Некоммерческая разработка и разработка open-sourse проектов не требуют платной лицензии.

GitHub Desktop

«Родной» графический интерфейс Гитхаба. GitHub Desktop работает под Windows и Mac и практически полностью копирует функционал основного сайта. Работает под той же учётной записью.
Правда, не всегда оперативно справляется с большими программами.

Зато отлично подходит для начала работы с git.

GitKraken


Поддерживает GitHub, Bitbucket и Gitlab.
Кракен очень любят программисты – фрилансеры, которым периодически приходится менять команды, а значит, и условия командной разработки. Возможность работы с разными git-хостингами через привычное приложение со знакомым интерфейсом в таких случаях играет важную роль.

SourceTree

SourceTree позволяет работать с Bitbucket и GitHub. В приложении довольно простой интерфейс, подходящий, как для опытных программистов, так и для новичков.

Шаг 6. Работа со SmartGit

Основные операции для работы с git


Clone


Первое, чему стоит научиться – это снимать копию проекта из удалённого репозитория в локальный.
Делается это довольно просто:

Операция Clone в SmartGit

Clone


Затем копируем ссылку репозитория, созданного на Гитхабе (шаг 2)

Ссылка на репозиторий

Ссылка на репозиторий


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

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

Commit

Добавление файла в локальный репозиторий

Добавление файла в локальный репозиторий


Если всё прошло успешно, в окошке SmartGit’а появится скопированный файл.

Новый файл в SmartGit

Новый файл в SmartGit



Для того чтобы зафиксировать изменения в локальном репозитории, нажимаем кнопку Commit.

Commit

Commit

В открывшемся окне пишем пояснительный комментарий к сохраняемому файлу и снова нажимаем кнопку Commit



Файл сохранён, а изменения внесены в журнал.

Файл отправлен в локальный репозиторий

Файл отправлен в локальный репозиторий


Push

Push

Push

Commit & Push

Commit & Push


Pull


Возникает резонный вопрос: как получат изменения остальные участники разработки, если они клонировали проект в самом начале?
Для этого существует команда Pull, передающая в локальный репозиторий все изменения, происходящие в удалённом.

Pull

Pull



К слову, для командной разработки на Гитхабе есть ещё несколько важных опций.

Перенос информации из сторонних репозиториев на Гитхаб

Когда нужно собрать разрозненные кусочки кода в один проект, используйте кнопку Import repository и работайте с файлами в удобном репозитории Гитхаба.

Импортировать репозиторий

Импортировать репозиторий

Кнопка New gist на этой панели предназначена для мгновенного обмена информацией.

А кнопка New organization открывает массу возможностей для командной разработки.

Заключение

О git’е можно писать ещё долго, подробно рассматривая возможные конфликты, создание и слияние деревьев, работу с ветками, но для начала эффективной работы достаточно знания основных команд и острого желания стать программистом.

Благодаря своей политике (поддержка open-sourse проектов) Github предоставляет удивительную возможность детально рассматривать программы, написанные как новичками, так и признанными гениями – программистами.

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

SG0001

Надо подтвердить что мы это юзаем не для коммерческих целей.

SG0002

Еще раз подтвердить

Выбираем встроенный SSH клиент

SG0004

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

SG0005

Из того что перечислено в этом списке только GitHub и Bitbucket бесплатные. Причем Bitbucket позволяет на бесплатном акаунте создавать закрытые репозитории. GitHub бесплатно позволяет создавать только открытые репозитории.

На следующем шаге он мне даже нашел мои локальные репозитории сам. Я его не просил, а он нашел.

SG0006

Оставлю так как есть

SG0007

SG0008

Скачаем так же zip архив с портабельной версией.

А пока посмотрим шестую версию

SG0009

Можно настроить чтобы было видно хэши коммитов.

SG0010

Тулза так же как и SmartSynchronize от этой фирмы производит приятное впечатление. Единственное что не нашел нужное для себя так это сравнение файла из разных коммитов. А так очень даже не плохо.

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

Читайте также: