- Подключаем Git к Android Studio
- ПШЕ AndroidStudio или как использовать VCS Tools по полной
- Amend commit
- Edit commit message
- Interactive rebase
- Multiple remotes
- Git blame
- Git cherry-pick
- Заключение
- Простое управление версиями с помощью Git в Android Studio
- Предпосылки
- 1. Создайте проект Android Studio
- 2. Интеграция Git
- 3. Интеграция с GitHub или Bitbucket
- 4. Окно контроля версий
- Локальные изменения T ab
- Консоль T ab
- Вкладка журнала
- 5. Создание коммита
Подключаем Git к Android Studio
Android Studio умеет работать с системами контроля версий (version control system, сокр.VCS). Самой популярной системой является Git, которая стала практически стандартом во многих языках программирования.
Сама по себе Git управляется через командную строку. Для изучения её возможностей есть множество документации. Мы сфокусируемся на подключении Git к проекту в Android Studio.
Чтобы лучше понять объяснения, откройте старый проект Hello Kitty или создайте его заново, если успели его удалить.
Для начала нужно установить Git. Перейдите на страницу загрузки http://git-scm.com/downloads и скачайте последнюю версию под вашу операционную систему.
Запускаем процесс инсталяции. Не рекомендую устанавливать в папку по умолчанию в системной папке Windows C:\Program Files, так как из-за пробела между словами часто возникают проблемы у многих пользователей при работе с командной строкой. Я установил в папке D:\Git. Желательно также прописать путь к папке D:\Git\bin\ в переменной окружения PATH.
Запускаем файл git-bash.exe для запуска консоли. Следует сконфигурировать Git, указав своё имя и электронный адрес, чтобы можно было установить авторство изменений в коде. Вводим по очереди две команды:
Возвращаемся в студию. Выбираем в меню File | Settings и в диалоговом окне в левой части выбираем секцию Version Control | Git. Нажимаем кнопку с многоточием и находим нужный файл на диске.
Для проверки можно щёлкнуть по кнопке Test, вы должны увидеть радостное сообщение в успешном случае. Закрываем окно настроек, применив изменения.
Данная настройка запоминается и в новых проектах этот шаг можно пропустить.
Далее идём в меню VCS | Import into Version Control | Create Git Repository и в диалоговом окне выбираем корневую папку проекта. Для удобства можно сразу нажать на значок студии (третий слева), чтобы сразу переместиться в корневую папку, если окно откроется с другой папкой.
Нажимаем кнопку OK и создаём локальный Git-репозиторий. Под капотом выполняется команда git init.
Как только вы это сделаете, в студии произойдут удивительные изменения. Многие имена файлов в левой панели окрасятся в коричневый цвет.
Коричневый цвет шрифта означает, что файл распознан системой контроля версий на локальном компьютере, но ещё не добавлен в репозиторий. Нам следует подсказать системе об этом.
Но не будем торопиться. При создании локального репозитория студия также создала несколько специальных файлов .gitignore, которые помогают системе контроля версий игнорировать некоторые файлы проекта при изменениях. Один такой файл вы можете найти в корневой папке проекта, а второй в папке app. Можете открыть их любым текстовым редактором. Начнём с файла из корневой папки.
Как видим, Git будет игнорировать файл .idea/workspace.xml, который относится к конфигурации самой студии на вашем компьютере и к самому проекту не имеет отношения. Аналогично будет проигнорирован файл local.properties, который является уникальным для каждого компьютера. Можно указывать не только отдельные файлы, но и папки. Например, в списке присутствует папка /build. В эту папку попадают файлы при компиляции. Их нет смысла отслеживать, так как они постоянно меняются, когда вы запускаете приложение для проверки. Все файлы, которые должны быть проигнорированы, выводятся обычным чёрным цветом. Обратите внимание на имя файла local.properties на скриншоте выше.
Кроме чёрного и коричневого цвета, имена файлов могут также выводиться синим цветом (файл изменён), зелёным (новый файл).
При подключении Git в нижней части студии появится новая вкладка Version Control. Откройте её. Сейчас вы видите две секции: Default и Unversioned Files. Секция Default сейчас пуста. При изменении или создании новых файлов они попадут в эту секцию. Секция Unversioned Files содержит файлы, которые ещё не были учтены системой контроля версий.
При создании нового проекта файлы автоматически не учитываются и находятся в секции Unversioned Files. Мы хотим их перенести в репозиторий. В левой части панели находятся две колонки со значками. Найдите значок с изображением папки в скобках (при подведении курсора появится подсказка Group by Directory) и нажмите на неё. Файлы будут сгруппированы, как в проекте. Так проще вам будет понять структуру.
Щёлкаем правой кнопкой мыши на Unversioned Files и выбираем в контекстном меню Add to VCS. Либо можно перетащить мышкой эту секцию на секцию Default. В результате все файлы переместятся и будут учтены системой контроля версий.
После добавления файлов нажмите на значок с зелёной стрелкой вверх и надписью VCS (Commit Changes). Откроется диалоговое окно. В текстовом поле Commit Message введите текст, поясняющий изменения в проекте и нажмите кнопку Commit.
Файлы исчезнут из секции Default и теперь находятся под контролем Git. При изменении файл снова попадёт в данную секцию и вам снова нужно выполнить предыдущую операцию Commit.
Например, откроем файл манифеста и добавим разрешение на работу с интернетом. Файл окрасится в синий цвет. Комментируем изменения в проекте, добавив сообщение Добавлено разрешение на интернет.
Просматривать изменения можно на вкладке Log. Вы можете просматривать коммиты и ветки.
Таким образом мы познакомились с базовыми приёмами работы с Git.
Также вы можете создавать новые ветки, сливать их в одну и выполнять прочие операции.
Естественно, вы можете также выкладывать проект на GitHub или наоборот вносить изменения в локальный проект из удалённого репозитория.
Источник
ПШЕ AndroidStudio или как использовать VCS Tools по полной
Примерно такая реакция была у меня после получения апрува первого пул реквеста на первой неделе работы в одной крупной компании. Причина такой реакции весьма простая — далеко не каждый заказчик/работодатель может себе позволить такую роскошь как большая команда на одну платформу, в особенности это касается мобильной разработки. Из-за ненадобности и возможности быстрой коммуникации в своем мирке, далеко не все вещи, которые используют крупные мастера своего дела, обретают актуальность в небольших командах. Говоря проще — а на кой мне это надо, если мы и так хорошо без этого жили и хорошо справлялись?
После перехода в новую компанию я столкнулся с той же проблемой, но уже по другую сторону баррикад. Если вы еще не догадались о чем пойдет речь дальше — это GIT, говоря точнее, его встроенный инструментарий в AndroidStudio и как он позволяет сделать нашу работу проще.
Я постараюсь не обращать внимания на банальные вещи: init VCS; new/rename/push branch; rebase/merge onto branch; setup remotes e.t.c. Я постараюсь обратить внимание на те элементы, которые по боязни своего незнания, я долгое время избегал(и жалею).
Amend commit
В случае, когда Вы решили дополнить свои изменения к последнему коммиту, стоит воспользоваться следующей коммандой:
А можно ускорить процесс:
Edit commit message
Допустим, Вы создали большой PR с большим количеством коммитов, да перед пушем заметили, что одно из сообщений некорректно и было бы неплохо его отредактировать, пока жесткий ревьювер не четвертовал Вас за такую оплошность:
Interactive rebase
Я боюсь представить выполнение одной из недавних задач по рефакторингу без знаний использования этого инструмента. Проблема заключалась в том, что мне нужно было отрефакторить N файлов. Каждое изменение следовало делать отдельным коммитом, чтобы не собирать большую пачку в одну кучку и была возможность отдельного форсирования каждого из файлов/коммитов в будущем.
Пачка была быстро собрана, коммиты получились хаотичные, да еще и на ревью получил порцию исправлений… Окей, не проблема.
Проверяем отставание наших изменений от ветки, в которую мы хотим вливаться.
Либо через GUIню:
Дальше скачем в tools:
Указываем количество коммитов, которые хотим отредактировать:
Или сразу укажем таргeт ветку:
Дальше определяемся что нам нужно сделать:
Подробнее про команды:
Коммиты отредактированы, осталось только подлить все на ремут сервер. Но ведь история изменена? И хэши явно не совпадают с тем, что находится на удаленной ветке.
Force push перезатрет нашу историю и примет новые изменения как родные.
Multiple remotes
Скорее всего это лишнее, но, исходя из моей практики, далеко не все обращают внимание на эту фичу.
Что это? В случае работы в 2 и более ремут хранилищах(актуально, когда доступ в основное хранилище по прямому запросу закрыт), быстрое переключение между удаленным ветками для пушей/пулов тоже упрощен:
Git blame
Полезный трюк для просмотра автора внесенных изменений:
Теперь про более эффективную работу. Если Вы не поленились и внесли правила ведения коммитов в Вашем проекте, стоит включть IssueNavigationLink :
(Кроме всего этого, Вы можете настроить проверку формирования коммит мессаджа с помощью git-hooks — https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)
Отредактируем файл project/.idea/vcs.xml :
Подбросим свою регулярку для анализа коммит месаджа:
Теперь просмотр истории либо блейма возможен с навигацией напрямую в задачу таск трекинговой системы с автоподстановкой необходимого ID.
Git cherry-pick
Не путать с командой cherry!
Допустим, Вы работаете над фичей/фиксом, во время работы заметили блокирующий Вас баг и поправили его, да всю свою работу не закончили и в рабочую ветку не влились. Ваши компаньоны отрепортили, что проблема блокирует не только Вас, но и кого-то другого, и было бы неплохо поделиться им. Но Вы все еще работаете над своей задачей, а отвлекаться нет желания… В таком случае, будет проще всего забрать Ваш 1 коммит в другую ветку и экстренно вмержить его в рабочую (фризную ветку). Как это сделать?
Заключение
В заключении хотелось бы сразу вспомнить вечный холивар на тему: терминал или GUI редактор для работы с VCS? Тут дело вкусовщины. Понятно дело, что CLI GIT-а более мощный инструмент и для спецефичных задач без него никуда. Но для ежедневных задач встроенный пакет утилит для работы с системами контроля версий в AS — просто must have и сократит время разработки в разы.
Надеюсь, что Вы нашли что-то новое в этой статье и помог облегчить Ваши трудовые будни.
Источник
Простое управление версиями с помощью Git в Android Studio
Как вы знаете, рекомендуется всегда использовать управление исходным кодом (SCM) для своих проектов, даже для личных проектов. Знаете ли вы, что Android Studio имеет удивительную интеграцию с Git для управления исходным кодом? Если вы не знали или не имели опыта его использования, тогда продолжайте читать этот пост. Даже если вы уже использовали интеграцию Git с Android Studio, вы все равно можете воспользоваться некоторыми полезными приемами в этом посте.
Я покажу вам множество функций поддержки Git в Android Studio, а также насколько легко выполнять различные операции Git (фиксация, push, pull, ветвление и т. Д.) Из Android Studio.
В этом руководстве я покажу вам список функций SCM, доступных в Android Studio. Мы рассмотрим следующие области:
- интеграция нового проекта Android Studio с Git
- работа с GitHub или Bitbucket
- исследовать окно контроля версий
- фиксаций
- ветви
- толкание и извлечение из удаленного хранилища
Предпосылки
Чтобы следовать этому руководству, вам понадобится:
1. Создайте проект Android Studio
GitApplicationDemo Android Studio и создайте новый проект (вы можете назвать его GitApplicationDemo ) с пустым действием MainActivity .
2. Интеграция Git
После того, как ваш проект Android Studio был настроен, щелкните меню VCS , наведите курсор на меню « Импорт в контроль версий» и выберите « Создать Git-репозиторий» …
Затем выберите верхнюю родительскую папку вашего Android Studio Project.
Нажмите кнопку ОК , чтобы инициализировать проект с помощью Git. Под капотом Android Studio выполняет команду Git:
Напомним, что эта команда будет делать:
Эта команда создает пустой Git-репозиторий — в основном каталог .git с подкаталогами для objects , refs/heads , refs/tags и файлами шаблонов. Первоначальный файл HEAD который ссылается на HEAD главной ветви, также создается.
Появится информационный диалог:
Это говорит нам о файле с именем vcs.xml в папке .idea . Эта папка содержит только настройки проекта. Обратите внимание, что этот формат используется во всех последних версиях IntelliJ IDEA.
В идеале файлы в .idea/ не должны доходить до Git, поэтому вы должны добавить его в .gitignore .
По умолчанию мы переключаемся на основную ветку. Вы всегда можете просмотреть текущую ветку вашего проекта в правом нижнем углу Android Studio.
3. Интеграция с GitHub или Bitbucket
Вы можете легко работать с любым репозиторием исходного кода Android, который находится в GitHub или Bitbucket в Android Studio. Позвольте мне показать вам, как это сделать.
Перейдите в Файл> Создать> Проект из контроля версий> GitHub .
(Если вы хотите работать с репозиторием из Bitbucket, выберите Bitbucket . Если вы хотите просто клонировать репозиторий Git из Интернета на локальный компьютер, выберите опцию меню Git .)
Затем введите учетные данные GitHub и нажмите « Войти» .
Если вход был успешным, появится диалоговое окно Clone Repository . В этом диалоговом окне отображается раскрывающийся список, содержащий список репозиториев на GitHub, которым вы в настоящее время владеете или над которыми работали.
Нажмите Клонировать, чтобы клонировать репо на локальный компьютер в уже выбранном родительском каталоге.
4. Окно контроля версий
После успешного запуска нашего проекта Android Studio с помощью Git, Android Studio покажет окно контроля версий . Нажмите на вкладку « Контроль версий » (в левом нижнем углу Android Studio) и давайте рассмотрим, что у нас там. Обратите внимание, что вы можете использовать Alt-9, чтобы быстро открыть это окно.
Внутри этого окна у нас есть три разных вкладки: Локальные изменения , Консоль и Журнал .
Локальные изменения T ab
Здесь показан список файлов, которые были изменены локально (на вашем компьютере) и еще не добавлены в хранилище.
Давайте посмотрим на панели инструментов элементов, доступные, когда вы находитесь на вкладке Локальные изменения .
- Нажмите на этот значок, чтобы обновить статус ваших файлов на текущем рабочем месте. Сочетание клавиш Control-F5 .
- Этот значок при нажатии подтвердит ваши текущие изменения. Сочетание клавиш Control-Alt-Z .
- Нажмите на этот значок, чтобы откатить любые выбранные изменения.
- Нажмите на этот значок, чтобы создать новый список изменений. Обратите внимание, что список изменений — это набор изменений в файлах, который представляет собой логическое изменение исходного кода. Это сочетание клавиш Alt-Insert .
- Нажмите эту кнопку, чтобы удалить выбранный список изменений.
- Чтобы активировать список изменений, просто нажмите этот значок.
- Чтобы переместить выбранный файл в другой список изменений, щелкните этот значок.
- Нажмите на этот значок, чтобы развернуть, чтобы просмотреть все файлы.
- Нажмите на этот значок, чтобы свернуть все файлы.
- Нажмите этот значок, чтобы отобразить измененные файлы, сгруппированные по папкам.
- Нажмите этот значок, чтобы скопировать путь к выбранному файлу в буфер обмена системы.
- Нажмите этот значок, чтобы отобразить узел игнорируемых файлов со списком существующих файлов, игнорируемых Git.
- Нажмите на этот значок, чтобы настроить список файлов, которые будут игнорироваться Git.
- Нажмите этот значок, чтобы открыть панель « Просмотр различий», чтобы сравнить текущий файл с последней принятой ревизией.
Консоль T ab
Внутри этой вкладки мы видим результат выполнения команд, связанных с Git. Обратите внимание, что вы не можете писать команды Git на этой вкладке — делайте это в окне терминала в Android Studio.
Вкладка журнала
На этой вкладке отображаются все изменения, которые были зафиксированы во всех ветвях локального и удаленного репозитория. Внутри этой вкладки вы можете просматривать коммиты в любой ветке.
Поле поиска используется для поиска коммитов, которые имеют введенную строку или регулярное выражение.
- Это раскрывающийся список, который используется для фильтрации фиксаций по веткам. Чтобы просмотреть все локальные и удаленные коммиты, просто выберите « Все» (по умолчанию).
- Чтобы отфильтровать коммиты по автору, используйте этот выпадающий список. Вы должны будете ввести имя автора, чтобы просмотреть его коммиты. Выберите Все, чтобы просмотреть коммиты всех пользователей.
- Используйте этот раскрывающийся список, чтобы отфильтровать коммиты по временному диапазону или по определенной дате Чтобы быть точным в дате, просто нажмите « Выбрать» и выберите дату. Выберите Все, чтобы просмотреть коммиты, сделанные на все даты.
- Используйте это раскрывающееся меню для фильтрации коммитов по пути измененных файлов.
- Эта кнопка (IntelliSort) позволяет более удобно просматривать слияния, сначала отображая входящие коммиты, прямо под коммитом слияния.
- Если эта кнопка включена, длинные ветви отображаются полностью, даже если в них нет коммитов.
- Используйте эту кнопку, чтобы обновить список коммитов в проекте.
- Чтобы перейти к хешу, тегу или ветке, просто используйте эту кнопку.
- Нажмите эту кнопку, чтобы применить изменения из выбранного коммита к текущей ветви.
- Нажмите эту кнопку, чтобы выделить коммиты из выбранной ветви, которые еще не были применены к текущей ветви.
Вы можете узнать больше об окне инструмента контроля версий в документации IntelliJ IDEA .
5. Создание коммита
Вы заметите, что когда мы настроили интеграцию Git с нашим проектом Android Studio, цвет имени нашего файла стал коричневым. Согласно официальной документации IntelliJ IDEA, для файлов с коричневыми метками:
Файл существует локально, но отсутствует в хранилище и не запланирован для добавления.
Давайте теперь посмотрим, как сделать коммит в Android Studio. Но сначала нам нужно добавить наши изменения в рабочем каталоге в область подготовки. В консоли мы будем использовать команду git add .
Но мы можем сделать это прямо из Android Studio. Выберите раскрывающийся список « Неверсированные файлы» на вкладке « Локальные изменения », щелкните правой кнопкой мыши и перейдите в « Git»> «Добавить» или используйте Control-Alt-A . Помните, что выбор корневой папки добавит все, что находится внутри нее, в область подготовки.
Источник