Это приложение для Windows под названием A Simple Version Control System, последний выпуск которого можно загрузить как asvcs-0-9-7.zip. Его можно запустить онлайн в бесплатном хостинг-провайдере OnWorks для рабочих станций.
Загрузите и запустите онлайн это приложение под названием «Простая система контроля версий с OnWorks» бесплатно.
Следуйте этим инструкциям, чтобы запустить это приложение:
— 1. Загрузил это приложение на свой компьютер.
— 2. Введите в нашем файловом менеджере https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.
— 3. Загрузите это приложение в такой файловый менеджер.
— 4. Запустите любой онлайн-эмулятор OS OnWorks с этого сайта, но лучше онлайн-эмулятор Windows.
— 5. В только что запущенной ОС Windows OnWorks перейдите в наш файловый менеджер https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.
— 6. Скачайте приложение и установите его.
— 7. Загрузите Wine из репозиториев программного обеспечения вашего дистрибутива Linux. После установки вы можете дважды щелкнуть приложение, чтобы запустить его с помощью Wine. Вы также можете попробовать PlayOnLinux, необычный интерфейс поверх Wine, который поможет вам установить популярные программы и игры для Windows.
Wine — это способ запустить программное обеспечение Windows в Linux, но без Windows. Wine — это уровень совместимости с Windows с открытым исходным кодом, который может запускать программы Windows непосредственно на любом рабочем столе Linux. По сути, Wine пытается заново реализовать Windows с нуля, чтобы можно было запускать все эти Windows-приложения, фактически не нуждаясь в Windows.
СКРИНШОТЫ
Простая система контроля версий
ОПИСАНИЕ
Простая система контроля версий — это простая в установке и использовании система контроля версий. Он полностью написан на PHP и хранит данные в базе данных SQL. ASVCS — отличный выбор для тех, кому не нужна или не нужна сложность большинства систем контроля версий.
Аудитория
Опытные конечные пользователи, системные администраторы, разработчики
Интерфейс пользователя
Веб-
Язык программирования
PHP
Это приложение также можно загрузить с https://sourceforge.net/projects/asvcs/. Он размещен в OnWorks, чтобы его можно было легко запускать в Интернете с помощью одной из наших бесплатных операционных систем.
Скачать приложения для Windows и Linux
- Приложения для Linux
- Приложения для Windows
-
1
- Библиотека JasperReports
- Библиотека JasperReports — это
самый популярный в мире открытый исходный код
бизнес-аналитика и отчетность
двигатель. Он полностью написан на Java
и это умеет … - Скачать библиотеку JasperReports
-
2
- Книги Frappe
- Frappe Books — это бесплатная книга с открытым исходным кодом.
программное обеспечение для настольного бухгалтерского учета, которое
простой и хорошо продуманный для использования
малый бизнес и фрилансеры. Это’… - Скачать книги фраппе
-
3
- Числовой Python
- НОВОСТИ: NumPy 1.11.2 — последний релиз
это будет сделано на sourceforge. Колеса
для Windows, Mac и Linux, а также
заархивированные исходные дистрибутивы могут быть четыре… - Скачать числовой Python
-
4
- КМУ Сфинкс
- CMUSphinx — это независимый от говорящих большой
словарный запас распознавателя слитной речи
выпущен под лицензией в стиле BSD. это
также набор инструментов с открытым исходным кодом … - Скачать КМУ Сфинкс
-
5
- ПиСкриптер
- PyScripter — это Python с открытым исходным кодом.
Интегрированная среда разработки (IDE)
создан с амбициями стать
конкурентоспособны по функциональности с
коммерческий я … - Скачать Пискриптер
-
6
- Хранилища старых ОС Feren
- Это был официальный репозиторий для
Ферен О.С. Чтобы добавить последний, запустите
эта команда: (на основе 16.04) echo
«деб … - Скачать старые репозитории Feren OS
- Больше »
Команды Linux
-
1
- aarch64-linux-gnu-полоса
- полоса — удалить символы из объекта
файлы. … - Запустите aarch64-linux-gnu-strip.
-
2
- аасавефонт
- аафайр, ааинфо, аасавефонт, атест —
aalib примеры программ… - Запустить aasavefont
-
3
- cps-аутентификация
- cps-auth — выполнить OAuth2
аутентификация для Cloudprint-сервиса… - Запустите cps-аутентификацию
-
4
- процессор
- процессор, BurnBX, BurnK6, BurnK7,
burnMMX, burnP5, burnP6 — коллекция
программ, сильно нагружающих процессор… - Запустить процессор
-
5
- гбклатекс
- bg5latex — использовать LaTeX непосредственно на Big5
файл encodedtex bg5pdflatex — Использование
pdfLaTeX непосредственно на закодированном тексте Big5
file bg5+latex — использовать LaTeX непосредственно на
Большой5+… - Запустить gbklatex
-
6
- gbkpdfлатекс
- bg5latex — использовать LaTeX непосредственно на Big5
файл encodedtex bg5pdflatex — Использование
pdfLaTeX непосредственно на закодированном тексте Big5
file bg5+latex — использовать LaTeX непосредственно на
Большой5+… - Запустите gbkpdflatex
- Больше »
Время на прочтение8 мин
Количество просмотров26K
Так как наша команда программистов ведет разработку сразу несколько проектов, довольно быстро возникла необходимость в системе контроля версий.
Естественно, поиски были начаты с изучения Хабра — и привели к неожиданному результату. Несмотря на то, что системы контроля версий появились ещё в 1986 году, большинство туториалов по работе с современными системами контроля версий оказались неполными и сильно завязанными на работу с командной строкой.
Мы ничего не имеем против командной строки в целом, но в нашей небольшой команде разработчиков (4 человека) фанатов работы с командной строкой нет :).
Почему мы считаем, что работа с командной строкой неэффективна?
- Трата времени на ввод данных. Набивать команды намного дольше, чем кликать мышкой.
- Трата времени на обучение. Изучение нового синтаксиса в эпоху понятных интерфейсов однозначно дольше, чем обучение графическому интерфейсу.
- Вероятность ошибки. Ошибиться при вводе данных через командную строку легче (человеческий фактор никто не отменял).
- Нарушение принципов автоматизации. Возможно, это самый главный пункт. Компьютер создан для ускорения работы и замене человека при выполнении рутинных операций. В случае с командной строкой мы всегда работаем вручную, по сути, приходится каждый раз писать один и тот же программный код (пусть и примитивный).
К сожалению, нам не удалось найти полноценного русскоязычного мануала по работе с современными системами контроля версий. Собрав информацию из разных статей и англоязычных видео на YouTube, мы решили сделать своё собственное руководство, которое:
- Будет пошаговой инструкций (по ней же будут работать наши программисты).
- Будет работать от начала и до конца (то есть по ней вы получите небольшой, но законченный результат — работающую распределенную систему контроля версий).
- Будет работать с использованием только графических интерфейсов (причины см. выше).
Вступление
Вопреки ожиданиям матерых сисадминов и прочих любителей и фанатов работы с командной строкой, в данной статье не будет никаких команд, выполняемых с помощью командной строки. Вся статья написана языком понятным даже тем, кто только недавно начал программировать, но уже задумался о внедрении VCS (системы контроля версий). Каждый шаг настройки VCS разжеван до мелочей с приведением принскринов и дополнительных пояснений.
Если вы не любитель мануалов «Для чайников», то можете не читать данную статью и пойти своим путем в решении задачи подъема VCS.
Используемые программы и сервисы
Для развертывания VCS (системы контроля версий) мы будем использовать следующие программы и сервисы:
- Mercurial — кроссплатформенная распределенная система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода.
- TortoiseHg — графический фронтенд для системы контроля версий Mercurial.
- Bitbucket — веб-сервис для хостинга проектов и их совместной разработки, основанный на системе контроля версий Mercurial и Git.
Развертывание система контроля версий – пошаговая инструкция
1. Скачиваем и устанавливаем к себе на компьютер TortoiseHg с официального сайта: http://tortoisehg.bitbucket.org/
Данный клиент необходимо будет устанавливать на всех компьютерах, с которых будет вестись совместная разработка проектов.
В данной инструкции все шаги настройки и работы с системой контроля версий будут производиться с использованием TortoiseHg версии: 2.10.1 for Windows 64-bit with Mercurial 2.8.1.
2. Регистрируемся в веб-сервисе Bitbucket: https://bitbucket.org/
Весь процесс регистрации сводится к заполнению контактных данных (Username, Email и т.д.) и подтверждения указанного при регистрации email-адреса нажатием на кнопку «Confirm this email address» в полученном после регистрации письме.
Регистрироваться в сервисе Bitbucket потребуется также всем участникам вашей команды разработчиков. К великому счастью стартапов в данном сервисе есть бесплатный аккаунт, который позволяет создавать приватные репозитории с 5-ю пользователями. Также есть возможность увеличения максимального числа членов команды, участвующей в разработке на бесплатном тарифе до 8 человек.
С полным списком тарифов вы можете ознакомиться, пройдя по ссылке: https://bitbucket.org/plans
3. Зайдя в ваш аккаунт в сервисе Bitbucket, вы можете сразу изменить язык интерфейса вашего аккаунта на русский.
Для этого в верхнем правом углу главного меню из выпадающего списка выберите раздел «Manage account» и на открывшейся странице выберите из выпадающего списка «Language» нужный вам язык интерфейса
4. Для создание репозитория для вашего проекта вам необходимо перейдите на главную страницу вашего аккаунта (https://bitbucket.org/dashboard/overview) и нажмите на кнопку «Создайте ваш первый репозиторий»
5. На странице создания нового репозитория укажите следующие настройки:
— Имя – Укажите имя вашего нового репозитория. Данное имя используется для построения ссылки доступа к вашему репозиторию.
Важно! Лучше указывать имя латинскими буквами, иначе ссылка на репозитрий будет заканчиваться дефисами и иметь сложный к пониманию вид: httрs://вашлогин@bitbucket.org/вашлогин/———
— Описание – Укажите краткое описание вашего репозитория (поле не обязательное)
— Уровень доступа – Поставьте галочку, если вы хотите, чтобы доступ к вашему репозиторию имели только члены вашей команды разработчиков (приватный репозиторий).
— Создание форков – Поставьте «Разрешить только приватные форки»
— Тип репозитория – Выберите «Mercurial»
— Управление проектом – Поставьте галочки «Трекер задач» и «Вики»
— Язык – Выберите язык разработки, на котором написан ваш проект. В моем случае это PHP.
По завершению указания всех настроек страница будет выгладить приблизительно так:
Еще раз проверьте введенные данные и если все введено корректно, жмем кнопку «Создать репозиторий».
6. После создания нового репозитория вы попадете на страницу «Начало работы»:
Где, нажав на ссылку «Я начинаю с полного нуля», сможете получить ссылку для подключения к вашему репозиторию с помощью TortoiseHg.
Ссылка будет иметь вид: httрs://вашлогин@bitbucket.org/вашлогин/имярепозитория
7. У себя на компьютере создаете пустую папку, в которой будут в дальнейшем храниться файлы вашего проекта, подключенные к системе контроля версий Mercurial.
Важно! Папка должна быть пустой. Мне, например, для подключения папки с уже существующим проектом (кучей программного кода) пришлось временно перенести все файлы в другой каталог (сделать резервную копию — backup). Позже мы вернем все файлы на место, а пока нужно полностью очистить папку для подключения.
Далее нажимаем на пустой папке, предназначенной для хранения файлов проекта, подключенных к системе контроля версий Mercurial, правой кнопкой мыши и из выпадающего меню выбираем пункт «TortoiseHg->Clone…»
8. В открывшемся окне вам необходимо указать в поле «Источник» ссылку для подключения к созданному вами репозиторию из п. 6
И нажать кнопку «Клонировать».
9. Система запросит у вас пароль от вашего аккаунта в сервисе Bitbucket, укажите его.
10. Если все было сделано без отклонений от данной инструкции, то в папке появится новый каталог «.hg» со служебными файлами созданного репозитория.
11. Теперь можно смело возвращать файлы (программный код) вашего проекта в папку, предназначенную для хранения файлов проекта, подключенных к системе контроля версий Mercurial
Важно! Служебный каталог «.hg» не трогайте. Он нужен для работы VCS.
12. Снова нажимаем правой кнопкой мыши на нашей папке проекта и из выпадающего меню выбираем пункт «Hg Commit…»
13. Вы увидите диалоговое окно, предназначенное для фиксации всех сделанных изменений, произведенных над вашим проектом (в данном случае мы добавили в изначально пустую папку проекта наши программные коды).
Вам необходимо выделить все измененные (добавленные) файлы, указать комментарий (например, Версия 1.00) к изменению и нажать кнопку «Фиксировать».
Система попросит подтвердить добавление, жмите «Добавить».
14. Если все было сделано правильно, то система зафиксирует произведенные изменения, и вы увидите приблизительно такое окно:
Собственно, в дальнейшем, когда будете вести разработку, после завершения небольшого куска кода, вы будете выполнять действие из п. 12 (нажимать «Hg Commit…») для фиксации проделанного изменения в системе контроля версия. Это даст вам возможность в любой момент времени откатить систему до предыдущей фиксации.
Учитывая вышесказанное, на практике следует писать более развернутый, чем «Версия 1.00», комментарий к каждой из фиксаций.
15. Далее нажимаем правой кнопкой мыши на папке проекта и из выпадающего меню выбираем пункт «Hg Workbench…»
16. В открывшемся окне вы можете видеть всю историю сохраненных (зафиксированных) изменений в коде, можете откатить к нужной фиксации, а также отправить изменения в созданный вами ранее репозиторий.
Для этого в панели управления выберите кнопку «Протолкнуть входящие изменения в».
После этого вам будут показаны диалоговые окна с просьбой подтвердить «проталкивание» и просьбой указать пароль от вашего аккаунта в Bitbucket. Соглашайтесь и указывайте пароль.
Система начнет копирование файлов в ваш репозиторий на сервере Bitbucket. Не спешите и дождитесь завершения процесса.
17. Теперь копия файлов вашего проекта храниться в вашем репозитории на серверах Bitbucket. В вашем аккаунте Bitbucket вы можете видеть всю историю работы с вашим проектом.
Промежуточные итоги подключения системы контроля версий (VCS)
На данный момент мы создали репозиторий и поместили в него все файли нашего проекта. То есть теперь вы можете подключиться к вашему репозиторию с любого компьютера и получить стабильную версию файлов хранящихся в нем.
Процесс подключения вашего второго компьютера заключается в копировании файлов из репозитория на второй компьютер. Вам нужно пройти шаги 1 – Установка TortoiseHg и 7 – Импорт файлов репозитория, для копирования файлов на второй, третий и следующие ваши рабочие компьютеры.
Подключение сотрудников к вашему репозиторию.
Основная цель подключения системы контроля версий (VCS) к своему проекту — это организация совместной работы. Т.е. пока вы разрабатываете систему один, вы в большинстве случаев можете обойтись без VCS, но если разработчиков несколько, то вероятность регулярной потери (затирания) программных кодов и конфликтов версий системы очень высока.
Поэтому давайте сейчас подключим к нашему проекту еще одного программиста (пригласим участника) и настроим ему рабочее место.
Подключение сотрудника к нашему репозиторию
18. Все сотрудники, которые будут иметь доступ к вашему репозиторию, должны быть зарегистрированы на сервисе Bitbucket. А также у них на компьютерах должен быть установлен TortoiseHg.
Как зарегистрироваться на сервисе и установить TortoiseHg, я рассказывал чуть ранее в данной инструкции. Поэтому данный процесс не должен вызвать у вас и ваших коллег никаких трудностей.
19. Зайдите в ваш аккаунт на сервисе Bitbucket:
Нажмите на кнопку «Отправить приглашение», расположенную в разделе «Пригласить участника на этот репозиторий».
20. Система выведет вам диалоговое окно с просьбой указать электронный адрес пользователя, которому вы хотите дать доступ к репозиторию. Помимо этого, вам понадобится указать права доступа («чтение» или «запись»). Т.к. в данной инструкции мы показываем, как подключить к репозиторию еще одного разработчика, то укажите «запись».
После того, как ввели email сотрудника и указали права доступа, жмите кнопку «Share».
21. Приглашенный участник получит на свой email письмо со ссылкой на приглашение. Ему будет необходимо пройти по данной ссылке и принять приглашение на доступ к вашему репозиторию.
Еще раз повторю, все участники вашего репозитория должны быть зарегистрированы в сервисе Bitbucket.
22. После того, как приглашение принято, новый участник будет видеть у себя в аккаунте данный репозиторий и свою ссылку на доступ к нему с помощью TortoiseHg.
23. Дальше вашему сотруднику необходимо выполнить 7 пункт данной инструкции для получения файлов проекта к себе на компьютер.
Все изменения, сделанные вами и вашими помощниками, будут сохраняться в вашем репозитории. Вы сможете смотреть, что и когда было изменено и при желании в любой момент откатите ваш проект к нужной версии.
Я думаю, вводную статью о развертывании системы контроля версий без использования командной строки можно на этом заканчивать. Прохождение описанных выше шагов позволит вам внедрить у себя на проекте полноценную VCS, т.е. пройдя все шаги, вы получите хоть и не большой, но законченный результат.
Данный подход мы применили для разработки проекта: АвтоОфис – платформа для интернет бизнеса
Если у вас после прочтения статьи появились вопросы ко мне или уточнения и дополнения инструкций, то пишите в комментариях. Буду очень благодарен, если усилите статью своим пониманием VCS.
P.S.: В следующей статье постараюсь доступным языком расписать, что такое «Ветки», «Метки» и «Форки» и как с ними работать.
Установка и настройка систем контроля версий
Пройдите тест, узнайте какой профессии подходите
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы
Введение в системы контроля версий
Системы контроля версий (VCS) являются неотъемлемой частью современного процесса разработки программного обеспечения. Они позволяют отслеживать изменения в коде, работать в команде и управлять различными версиями проекта. Самой популярной VCS на сегодняшний день является Git. В этой статье мы рассмотрим, как установить и настроить Git, а также основные операции, которые помогут вам начать работу с этой системой.
Git предоставляет мощные инструменты для управления версиями кода, что делает его незаменимым для разработчиков. С его помощью можно легко отслеживать изменения, откатываться к предыдущим версиям, работать над разными ветками проекта и сливать изменения. Это особенно важно в командной работе, где каждый разработчик может вносить свои изменения, не боясь повредить общий код.

Установка Git на различных операционных системах
Установка Git на Windows
- Перейдите на официальный сайт Git: git-scm.com.
- Скачайте установочный файл для Windows.
- Запустите установочный файл и следуйте инструкциям мастера установки.
- Во время установки выберите параметры по умолчанию, если не уверены, что вам нужно изменить.
После завершения установки Git, вы можете проверить, что все прошло успешно, открыв командную строку и введя команду:
Эта команда выведет установленную версию Git, что подтвердит успешную установку.
Установка Git на macOS
- Откройте терминал.
- Введите команду:
sh
brew install git - Если у вас не установлен Homebrew, сначала установите его, следуя инструкциям на официальном сайте Homebrew.
Homebrew является удобным менеджером пакетов для macOS, который упрощает установку и управление программным обеспечением. После установки Git с помощью Homebrew, вы также можете проверить версию Git, введя команду:
Установка Git на Linux
Для различных дистрибутивов Linux команды могут немного отличаться:
Ubuntu/Debian
Fedora
Arch Linux
После установки Git на любой из этих дистрибутивов, вы можете проверить версию Git с помощью команды:
Настройка Git: базовые команды и конфигурации
После установки Git необходимо выполнить несколько базовых настроек.
Настройка имени пользователя и электронной почты
Эти данные будут использоваться для идентификации автора коммитов. Это важно, так как каждый коммит в Git содержит информацию о том, кто его создал.
Проверка настроек
Для проверки текущих настроек используйте команду:
Эта команда выведет все текущие настройки Git, включая имя пользователя и электронную почту. Это полезно для проверки, что все настройки были применены правильно.
Настройка редактора по умолчанию
Вы можете настроить редактор, который будет использоваться для написания сообщений коммитов. По умолчанию Git может использовать системный редактор, но вы можете изменить это на любой удобный вам редактор.
Вы можете заменить «nano» на любой другой редактор, который вам нравится, например, «vim» или «code» (Visual Studio Code).
Создание и управление репозиториями
Создание нового репозитория
Для создания нового репозитория выполните следующие шаги:
- Перейдите в директорию вашего проекта:
sh
cd /путь/к/проекту - Инициализируйте новый репозиторий:
sh
git init
Эта команда создаст скрытую папку .git
, которая будет содержать все необходимые файлы для управления версиями вашего проекта.
Клонирование существующего репозитория
Если вы хотите склонировать существующий репозиторий, используйте команду:
Эта команда создаст копию удаленного репозитория на вашем локальном компьютере. Клонирование репозитория полезно, когда вы хотите начать работу над проектом, который уже существует.
Добавление файлов в репозиторий
Для добавления файлов в репозиторий используйте команду:
Вы также можете добавить все файлы в текущей директории с помощью команды:
Создание коммитов
После добавления файлов необходимо создать коммит:
Сообщение коммита должно быть информативным и описывать внесенные изменения. Это поможет вам и вашим коллегам понимать, что было изменено в каждом коммите.
Основные операции с ветками и слияниями
Создание новой ветки
Для создания новой ветки используйте команду:
Ветки позволяют вам работать над различными задачами или функциями независимо друг от друга. Это особенно полезно в командной работе, где каждый разработчик может работать над своей веткой, не мешая остальным.
Переключение между ветками
Для переключения на другую ветку используйте команду:
Эта команда переключит вас на указанную ветку, позволяя вам работать над ней. Вы можете проверить, на какой ветке вы находитесь, с помощью команды:
Слияние веток
Для слияния изменений из одной ветки в другую выполните следующие шаги:
- Переключитесь на ветку, в которую хотите слить изменения:
sh
git checkout основная_ветка - Выполните слияние:
sh
git merge имя_ветки
Слияние позволяет объединить изменения из разных веток в одну. Это полезно, когда вы завершили работу над функцией и хотите включить ее в основную ветку проекта.
Удаление ветки
Для удаления ветки используйте команду:
Удаление веток помогает поддерживать чистоту в вашем репозитории, удаляя ненужные или устаревшие ветки.
Заключение
Теперь вы знаете, как установить и настроить Git, а также выполнять основные операции с репозиториями и ветками. Эти знания помогут вам эффективно управлять вашим кодом и работать в команде. Не забывайте регулярно коммитить изменения и использовать ветки для организации работы над различными задачами.
Git предоставляет множество возможностей для управления версиями кода, и освоение его базовых команд и настроек является важным шагом для любого разработчика. С практикой вы сможете использовать более сложные функции Git, такие как разрешение конфликтов, работа с удаленными репозиториями и настройка хуков. Удачи в вашем пути к мастерству в использовании Git! 😉
Читайте также
Памятуя о статье Коротко о системе контроля версий и подозревая, что самому масса вещей еще понадобится, за две недели нарисовал этот текст. Сначала думал сделать одну большую статью, но объем такой статьи получился запредельным (больше 5 метров со всеми картинками), поэтому разбил на несколько кусочков.
Получился небольшой цикл из 4 статей (включая эту), посвященный работе с 3 клиентами cvs: TortoiseSVN, SourceTree и GitExtensions. Разбирался с ними по русскому принципу — т.е. инструкцию начинал читать только когда понимал что «все, звездец, сломал». Так что особо строго не судите
Это модное и не очень понятное слово «дисклайм»
Ну как бы предупреждение по принципу «кто не спрятался, я не виноват», «я не несу никакой ответственности бла-бла-бла», «это не мануал, а просто рассказ о моих поисках» и т.д.
Это всего лишь рассказ о собственных мучениях при выборе системы контроля версий и небольшая попытка свести все воедино. Ну и плюс, как обычно, шпаргалка для себя любимого – чтобы не забыть, что, откуда, как и почему. Если не испугал – добро пожаловать
Чуть-чуть о системах контроля версий
В свое время остро встал вопрос с хранением исходных кодов, компилированных вариантов (chm, в частности, под понятие компилированных подошел как нельзя более кстати) файлов и, что самое главное, истории их изменения. Крайне желательно иметь историю с комментариями – кто чего сделал и почему.
Такие системы есть, называются Control Version System (сокращают как CVS или VCS — где как), или системы контроля версий. Все хорошо, но надо выбрать наиболее удобную (для конечного пользователя) и гибкую (это уже для поисков «кто чего натворил»). Прежде чем приступать к экспериментам, дадим некоторые вводные условия:
- Клиентская программа (или клиент) работает под Windows. Без вариантов. Должна работать и под 32, и под 64 бита. Бесплатна и эта бесплатность – официальная.
- Есть сетевой диск с большим количеством информации на нем. Отслеживать изменения надо только для некоторых папок / каталогов.
- Вся работа выполняется в условиях недоступности интернета (но софт скачать можно).
В принципе, этого достаточно. Примем также идею, что есть некое центральное хранилище (т.н. «репозиторий»), в котором собственно и хранятся все данные (возможно, в каком-то не очень доступном виде). Есть «рабочие» копии, внутри которых хранятся файлы уже в привычном для человека виде. При этом «рабочей» копией является и сам сетевой диск. Клиентская программа должна позволять быстро и просто как вносить изменения в центральный репозиторий, так и восстанавливать их оттуда.
Вроде ничего не забыл
Естественно, что обязательно должен предоставляться вариант «посмотреть, что и где изменилось». Естественно, что должен быть вариант разрешения конфликтов, неизбежно возникающих при слиянии с центральным репозиторием.
Это модное и не очень понятное слово «дисклайм»
Все эксперименты провожу над Windows 7 Pro x32, со всеми обновлениями. Никакого стороннего софта на компьютере нет вообще (даже антивирус не установлен). Единственное, что изменил – отключил UAC, поскольку каждый раз говорить, что «да, я знаю, чем это грозит; да, я согласен внести изменения» — утомляет.
Примем, что на локальном компьютере есть каталог c:\git_test, преобразованный в сетевой диск v: командой subst, выполненной в командной строке Windows:
Все, виртуальный диск создан и подключен.
В этот каталог поместим несколько подкаталогов – как тех, которые надо отслеживать, так и «лишних» с точки зрения системы контроля версий. Кроме того, поместим несколько файлов напрямую в «сетевой» диск – тоже для имитации реальной ситуации и для того, чтобы научиться такие файлы игнорировать (целиком или частично). Общий объем перебрасываемой информации – около 2 ГБ, отслеживать надо около 200 МБ (если конкретнее – то каталоги Apps, dotnet, Settings).
Наш центальный репозиторий будем располагать на этом же диске. Для этого создадим там каталог VersionControl. Естественно, что VersionControl надо будет исключать из отслеживаемых каталогов.
Выбор системы контроля версий
Иногда (точнее, не иногда, а почти всегда) ситуация складывается так, что приходится выполнять как бы ветвление разработки. Т.е. выполнять отдельную разработку какого-либо куска кода. При этом внесение этих изменений не должно затрагивать основную массу исходников. Такое понятие тоже есть, называется «Ветка», или «Бранч» (Branch). Ветки потом можно забросить или «слить» с основным потоком разработки.
Т.е. теоретически используемая система должна все это поддерживать и спокойно со всем этим богатством работать. При этом (повторюсь) работать надо из-под Windows и крайне желательно с GUI-интерфейсом. Командную строку я, конечно, уважаю, но не до такой степени, чтобы становиться юниксоидом ради одной утилитки
Не очень продолжительный поиск привел к выбору между SVN и GIT. Вот каждую из них и рассмотрим
Для установки ПО потребуются права локального администратора, для работы они уже не являются необходимыми. Также в процессе установки может потребоваться доступ в интернет. Клиенты нередко обновляются, поэтому крайне желательно время от времени проверять наличие новых версий.
Краткое содержание следующих серий
SVN и TortoiseSVN | ||
Установка клиента | ||
Создание центрального репозитория | ||
Помещение в центральный репозиторий данных с сетевого диска | ||
Создание локальной рабочей копии на компьютере разработчика | ||
Преобразование сетевого диска в рабочую копию | ||
Внесение изменений в центральный репозиторий | ||
Синхронизация изменений с рабочими копиями | ||
Восстановление состояния системы | ||
Ветвление разработки | ||
Создание ветки | ||
Слияние ветки с основным направлением | ||
Выводы | ||
Git и SourceTree | ||
Установка клиента | ||
Создание центрального репозитория | ||
Создание локальной рабочей копии | ||
Создание и начальная настройка центрального репозитория с использованием терминала | ||
.gitignore и с чем его едят | ||
Создание локальной копии репозитория | ||
Установка внешнего центрального репозитория | ||
Вносим изменения в свой локальный репозиторий | ||
Восстановление состояния системы | ||
Создание ветки | ||
Слияние ветки с основным направлением | ||
Выводы | ||
GIT и GitExtension | ||
Установка клиента | ||
Создание центрального репозитория | ||
Помещение в центральный репозиторий данных с сетевого диска | ||
Создание локальной рабочей копии на компьютере разработчика | ||
Внесение изменений в центральный репозиторий | ||
Синхронизация изменений с рабочими копиями | ||
Синхронизация изменений с рабочими копиями | ||
Выводы |
К сожалению, только сейчас сообразил, что не рассмотрел вариант конфликта версий или веток Ну не получилось у меня пока что наступить на эти грабли Как только столкнусь — расскажу (если не забуду, конечно)
Кому лень читать…
Пока что задумываюсь об использовании SourceTree как более удобного клиента. Неудобства при старте компенсируются легкостью использования.
Хотя эта легкость, конечно, тоже обоюдоострое оружие… В общем, поглядим!
В последние годы популярность git демонстрирует взрывной рост. Эта система контроля версий используется различными проектами с открытым исходным кодом.
Новичков часто пугает большое количество замысловатых команд и сложных аргументов. Но для начала все они и не нужны. Можно начать с изучения наиболее часто используемых команд, и после этого постепенно расширять свои знания. Именно так мы и поступим в этой статье. Поехали!
Основы
Git — это набор консольных утилит, которые отслеживают и фиксируют изменения в файлах (чаще всего речь идет об исходном коде программ, но вы можете использовать его для любых файлов на ваш вкус). Изначально Git был создан Линусом Торвальдсом при разработке ядра Linux. Однако инструмент так понравился разработчикам, что в последствии, он получил широкое распространение и его стали использовать в других проектах. С его помощью вы можете сравнивать, анализировать, редактировать, сливать изменения и возвращаться назад к последнему сохранению. Этот процесс называется контролем версий.
Для чего он нужен? Ну во-первых, чтобы отследить изменения, произошедшие с проектом, со временем. Проще говоря, мы можем посмотреть как менялись файлы программы, на всех этапах разработки и при необходимости вернуться назад и что-то отредактировать. Часто бывают ситуации, когда, во вполне себе работающий код, вам нужно внести определенные правки или улучшить какой-то функционал, по желанию заказчика. Однако после внедрения нововведений, вы с ужасом понимаете, что все сломалось. У вас начинается судорожно дергаться глаз, а в воздухе повисает немой вопрос: “Что делать?” Без системы контроля версий, вам надо было бы долго напряженно просматривать код, чтобы понять как было до того, как все перестало работать. С Гитом же, все что нужно сделать — это откатиться на коммит назад.
Во-вторых он чрезвычайно полезен при одновременной работе нескольких специалистов, над одним проектом. Без Гита случится коллапс, когда разработчики, скопировав весь код из главной папки и сделав с ним задуманное, попытаются одновременно вернуть весь код обратно.
Git является распределенным, то есть не зависит от одного центрального сервера, на котором хранятся файлы. Вместо этого он работает полностью локально, сохраняя данные в директориях на жестком диске, которые называются репозиторием. Тем не менее, вы можете хранить копию репозитория онлайн, это сильно облегчает работу над одним проектом для нескольких людей. Для этого используются сайты вроде github и bitbucket.
Установка
Установить git на свою машину очень просто:
- Linux — нужно просто открыть терминал и установить приложение при помощи пакетного менеджера вашего дистрибутива. Для Ubuntu команда будет выглядеть следующим образом:
sudo apt-get install git
- Windows — мы рекомендуем git for windows, так как он содержит и клиент с графическим интерфейсом, и эмулятор bash.
- OS X — проще всего воспользоваться homebrew. После его установки запустите в терминале:
brew install git
Если вы новичок, клиент с графическим интерфейсом(например GitHub Desktop и Sourcetree) будет полезен, но, тем не менее, знать команды очень важно.
Настройка
Итак, мы установили git, теперь нужно добавить немного настроек. Есть довольно много опций, с которыми можно играть, но мы настроим самые важные: наше имя пользователя и адрес электронной почты. Откройте терминал и запустите команды:
git config --global user.name "My Name" git config --global user.email myEmail@example.com
Теперь каждое наше действие будет отмечено именем и почтой. Таким образом, пользователи всегда будут в курсе, кто отвечает за какие изменения — это вносит порядок.
Git хранит весь пакет конфигураций в файле .gitconfig, находящемся в вашем локальном каталоге. Чтобы сделать эти настройки глобальными, то есть применимыми ко всем проектам, необходимо добавить флаг –global. Если вы этого не сделаете, они будут распространяться только на текущий репозиторий.
Для того, чтобы посмотреть все настройки системы, используйте команду:
git config --list
Для удобства и легкости зрительного восприятия, некоторые группы команд в Гит можно выделить цветом, для этого нужно прописать в консоли:
git config --global color.ui true git config --global color.status auto git config --global color.branch auto
Если вы не до конца настроили систему для работы, в начале своего пути — не беда. Git всегда подскажет разработчику, если тот запутался, например:
- Команда git —help — выводит общую документацию по git
- Если введем git log —help — он предоставит нам документацию по какой-то определенной команде (в данном случае это — log)
- Если вы вдруг сделали опечатку — система подскажет вам нужную команду
- После выполнения любой команды — отчитается о том, что вы натворили
- Также Гит прогнозирует дальнейшие варианты развития событий и всегда направит разработчика, не знающего, куда двигаться дальше
Тут стоит отметить, что подсказывать система будет на английском, но не волнуйтесь, со временем вы изучите несложный алгоритм ее работы и будете разговаривать с ней на одном языке.
Создание нового репозитория
Как мы отметили ранее, git хранит свои файлы и историю прямо в папке проекта. Чтобы создать новый репозиторий, нам нужно открыть терминал, зайти в папку нашего проекта и выполнить команду init. Это включит приложение в этой конкретной папке и создаст скрытую директорию .git, где будет храниться история репозитория и настройки.
Создайте на рабочем столе папку под названием git_exercise. Для этого в окне терминала введите:
$ mkdir Desktop/git_exercise/ $ cd Desktop/git_exercise/ $ git init
Командная строка должна вернуть что-то вроде:
Initialized empty Git repository in /home/user/Desktop/git_exercise/.git/
Это значит, что наш репозиторий был успешно создан, но пока что пуст. Теперь создайте текстовый файл под названием hello.txt и сохраните его в директории git_exercise.
Определение состояния
status — это еще одна важнейшая команда, которая показывает информацию о текущем состоянии репозитория: актуальна ли информация на нём, нет ли чего-то нового, что поменялось, и так далее. Запуск git status на нашем свежесозданном репозитории должен выдать:
$ git status On branch master Initial commit Untracked files: (use "git add ..." to include in what will be committed) hello.txt
Сообщение говорит о том, что файл hello.txt неотслеживаемый. Это значит, что файл новый и система еще не знает, нужно ли следить за изменениями в файле или его можно просто игнорировать. Для того, чтобы начать отслеживать новый файл, нужно его специальным образом объявить.
Подготовка файлов
В git есть концепция области подготовленных файлов. Можно представить ее как холст, на который наносят изменения, которые нужны в коммите. Сперва он пустой, но затем мы добавляем на него файлы (или части файлов, или даже одиночные строчки) командой add и, наконец, коммитим все нужное в репозиторий (создаем слепок нужного нам состояния) командой commit.
В нашем случае у нас только один файл, так что добавим его:
$ git add hello.txt
Если нам нужно добавить все, что находится в директории, мы можем использовать
$ git add -A
Проверим статус снова, на этот раз мы должны получить другой ответ:
$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached ..." to unstage) new file: hello.txt
Файл готов к коммиту. Сообщение о состоянии также говорит нам о том, какие изменения относительно файла были проведены в области подготовки — в данном случае это новый файл, но файлы могут быть модифицированы или удалены.
Фиксация изменений
Как сделать коммит
Представим, что нам нужно добавить пару новых блоков в html-разметку (index.html) и стилизовать их в файле style.css. Для сохранения изменений, их необходимо закоммитить. Но сначала, мы должны обозначить эти файлы для Гита, при помощи команды git add, добавляющей (или подготавливающей) их к коммиту. Добавлять их можно по отдельности:
git add index.html
git add css/style.css
или вместе — всё сразу:
git add .
Конечно добавлять всё сразу удобнее, чем прописывать каждую позицию отдельно. Однако, тут надо быть внимательным, чтобы не добавить по ошибке ненужные элементы. Если же такое произошло изъять оттуда ошибочный файл можно при помощи команды
git reset:
git reset css/style.css
Теперь создадим непосредственно сам коммит
git commit -m 'Add some code'
Флажок -m задаст commit message — комментарий разработчика. Он необходим для описания закоммиченных изменений. И здесь работает золотое правило всех комментариев в коде: «Максимально ясно, просто и содержательно обозначь написанное!»
Как посмотреть коммиты
Для просмотра все выполненных фиксаций можно воспользоваться историей коммитов. Она содержит сведения о каждом проведенном коммите проекта. Запросить ее можно при помощи команды:
git log
В ней содержится вся информация о каждом отдельном коммите, с указанием его хэша, автора, списка изменений и даты, когда они были сделаны. Отследить интересующие вас операции в списке изменений, можно по хэшу коммита, при помощи команды git show :
git show hash_commit
Ну а если вдруг нам нужно переделать commit message и внести туда новый комментарий, можно написать следующую конструкцию:
git commit --amend -m 'Новый комментарий'
В данном случае сообщение последнего коммита перезапишется. Но злоупотреблять этим не стоит, поскольку эта операция опасная и лучше ее делать до отправки коммита на сервер.
Удаленные репозитории
Сейчас наш коммит является локальным — существует только в директории .git на нашей файловой системе. Несмотря на то, что сам по себе локальный репозиторий полезен, в большинстве случаев мы хотим поделиться нашей работой или доставить код на сервер, где он будет выполняться.
1. Что такое удаленный репозиторий
Репозиторий, хранящийся в облаке, на стороннем сервисе, специально созданном для работы с git имеет ряд преимуществ. Во-первых — это своего рода резервная копия вашего проекта, предоставляющая возможность безболезненной работы в команде. А еще в таком репозитории можно пользоваться дополнительными возможностями хостинга. К примеру -визуализацией истории или возможностью разрабатывать вашу программу непосредственно в веб-интерфейсе.
Клонирование
Клонирование — это когда вы копируете удаленный репозиторий к себе на локальный ПК. Это то, с чего обычно начинается любой проект. При этом вы переносите себе все файлы и папки проекта, а также всю его историю с момента его создания. Чтобы склонировать проект, сперва, необходимо узнать где он расположен и скопировать ссылку на него. В нашем руководстве мы будем использовать адрес https://github.com/tutorialzine/awesome-project, но вам посоветуем, попробовать создать свой репозиторий в GitHub, BitBucket или любом другом сервисе:
git clone https://github.com/tutorialzine/awesome-project
При клонировании в текущий каталог, там будет создана папка, в которую поместятся все проектные файлы и скрытая директория .git, с самим репозиторием, или с необходимой информацией о нем. В такой ситуации, для клонируемого репозитория, по умолчанию, будет создана папка с одноименным названием, но его можно залить и в другую директорию, например:
git clone https://github.com/tutorialzine/awesome-project new-folder
2. Подключение к удаленному репозиторию
Чтобы загрузить что-нибудь в удаленный репозиторий, сначала нужно к нему подключиться. Регистрация и установка может занять время, но все подобные сервисы предоставляют хорошую документацию.
Чтобы связать наш локальный репозиторий с репозиторием на GitHub, выполним следующую команду в терминале. Обратите внимание, что нужно обязательно изменить URI репозитория на свой.
# This is only an example. Replace the URI with your own repository address.
$ git remote add origin https://github.com/tutorialzine/awesome-project.git
Проект может иметь несколько удаленных репозиториев одновременно. Чтобы их различать, мы дадим им разные имена. Обычно главный репозиторий называется origin.
3. Отправка изменений на сервер
Сейчас самое время переслать наш локальный коммит на сервер. Этот процесс происходит каждый раз, когда мы хотим обновить данные в удаленном репозитории.
Команда, предназначенная для этого — push. Она принимает два параметра: имя удаленного репозитория (мы назвали наш origin) и ветку, в которую необходимо внести изменения (master — это ветка по умолчанию для всех репозиториев).
$ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/tutorialzine/awesome-project.git * [new branch] master -> master
Эта команда немного похожа на git fetch, с той лишь разницей, что при помощи fetch мы импортируем коммиты в локальную ветку, а применив push, мы экспортируем их из локальной в удаленную. Если вам необходимо настроить удаленную ветку используйте git remote. Однако пушить надо осторожно, ведь рассматриваемая команда перезаписывает безвозвратно все изменения. В большинстве случаев, ее используют, чтобы опубликовать выгружаемые локальные изменения в центральный репозиторий. А еще ее применяют для того, чтобы поделиться, внесенными в локальный репозиторий, нововведениями, с коллегами или другими удаленными участниками разработки проекта. Подытожив сказанное, можно назвать git push — командой выгрузки, а git pull и git fetch — командами загрузки или скачивания. После того как вы успешно запушили измененные данные, их необходимо внедрить или интегрировать, при помощи команды слияния git merge.
В зависимости от сервиса, который вы используете, вам может потребоваться аутентифицироваться, чтобы изменения отправились. Если все сделано правильно, то когда вы посмотрите в удаленный репозиторий при помощи браузера, вы увидите файл hello.txt
4. Запрос изменений с сервера
Если вы сделали изменения в вашем удаленном репозитории, другие пользователи могут скачать изменения при помощи команды pull.
$ git pull origin master From https://github.com/tutorialzine/awesome-project * branch master -> FETCH_HEAD Already up-to-date.
Так как новых коммитов с тех пор, как мы склонировали себе проект, не было, никаких изменений доступных для скачивания нет.
Как удалить локальный репозиторий
Вам не понравился один из ваших локальных Git-репозиториев и вы хотите стереть его со своей машины. Для этого вам всего лишь надо удалить скрытую папку «.git» в корневом каталоге репозитория. Сделать это можно 3 способами:
- Проще всего вручную удалить эту папку «.git» в корневом каталоге «Git Local Warehouse».
- Также удалить, не устраивающий вас, репозиторий можно на github. Открываете нужный вам объект и переходите в пункт меню Настройки. Там, прокрутив ползунок вниз, вы попадете в зону опасности, где один из пунктов будет называться «удаление этого хранилища».
- Последний метод удаления локального хранилища через командную строку, для этого в терминале необходимо ввести следующую команду:
cd repository-path/ rm -r .git
Ветвление
Во время разработки новой функциональности считается хорошей практикой работать с копией оригинального проекта, которую называют веткой. Ветви имеют свою собственную историю и изолированные друг от друга изменения до тех пор, пока вы не решаете слить изменения вместе. Это происходит по набору причин:
- Уже рабочая, стабильная версия кода сохраняется.
- Различные новые функции могут разрабатываться параллельно разными программистами.
- Разработчики могут работать с собственными ветками без риска, что кодовая база поменяется из-за чужих изменений.
- В случае сомнений, различные реализации одной и той же идеи могут быть разработаны в разных ветках и затем сравниваться.
1. Создание новой ветки
Основная ветка в каждом репозитории называется master. Чтобы создать еще одну ветку, используем команду branch <name>
$ git branch amazing_new_feature
Это создаст новую ветку, пока что точную копию ветки master.
2. Переключение между ветками
Сейчас, если мы запустим branch, мы увидим две доступные опции:
$ git branch amazing_new_feature * master
master — это активная ветка, она помечена звездочкой. Но мы хотим работать с нашей “новой потрясающей фичей”, так что нам понадобится переключиться на другую ветку. Для этого воспользуемся командой checkout, она принимает один параметр — имя ветки, на которую необходимо переключиться.
$ git checkout amazing_new_feature
В Git ветка — это отдельная линия разработки. Git checkout позволяет нам переключаться как между удаленными, так и меду локальными ветками. Это один из способов получить доступ к работе коллеги или соавтора, обеспечивающий более высокую продуктивность совместной работы. Однако тут надо помнить, что пока вы не закомитили изменения, вы не сможете переключиться на другую ветку. В такой ситуации нужно либо сделать коммит, либо отложить его, при помощи команды git stash, добавляющей текущие незакоммиченные изменения в стек изменений и сбрасывающей рабочую копию до HEAD’а репозитория.
3. Слияние веток
Наша “потрясающая новая фича” будет еще одним текстовым файлом под названием feature.txt. Мы создадим его, добавим и закоммитим:
$ git add feature.txt $ git commit -m "New feature complete.”
Изменения завершены, теперь мы можем переключиться обратно на ветку master.
$ git checkout master
Теперь, если мы откроем наш проект в файловом менеджере, мы не увидим файла feature.txt, потому что мы переключились обратно на ветку master, в которой такого файла не существует. Чтобы он появился, нужно воспользоваться merge для объединения веток (применения изменений из ветки amazing_new_feature к основной версии проекта).
$ git merge amazing_new_feature
Теперь ветка master актуальна. Ветка amazing_new_feature больше не нужна, и ее можно удалить.
$ git branch -d awesome_new_feature
Если хотите создать копию удаленного репозитория — используйте git clone. Однако если вам нужна только определенная его ветка, а не все хранилище — после git clone выполните следующую команду в соответствующем репозитории:
git checkout -b <имя ветки> origin/<имя ветки>
После этого, новая ветка создается на машине автоматически.
Бывают ситуации, когда после слива каких-то изменений из рабочей ветки в исходную версию проекта, ее, по правилам хорошего тона, необходимо удалить, чтобы она более не мешалась в вашем коде. Но как это сделать?
Для локально расположенных веток существует команда:
git branch -d local_branch_name
где флажок -d являющийся опцией команды git branch — это сокращенная версия ключевого слова —delete, предназначенного для удаления ветки, а local_branch_name – название ненужной нам ветки.
Однако тут есть нюанс: удалить текущую ветку, в которую вы, в данный момент просматриваете — нельзя. Если же вы все-таки попытаетесь это сделать, система отругает вас и выдаст ошибку с таким содержанием:
Error: Cannot delete branch local_branch_name checked out at название_директории
Так что при удалении ветвей, обязательно переключитесь на другой branch.
Дополнительно
В последней части этого руководства мы расскажем о некоторых дополнительных трюках, которые могут вам помочь.
1. Отслеживание изменений, сделанных в коммитах
У каждого коммита есть свой уникальный идентификатор в виде строки цифр и букв. Чтобы просмотреть список всех коммитов и их идентификаторов, можно использовать команду log:
$ git log commit ba25c0ff30e1b2f0259157b42b9f8f5d174d80d7 Author: Tutorialzine Date: Mon May 30 17:15:28 2016 +0300 New feature complete commit b10cc1238e355c02a044ef9f9860811ff605c9b4 Author: Tutorialzine Date: Mon May 30 16:30:04 2016 +0300 Added content to hello.txt commit 09bd8cc171d7084e78e4d118a2346b7487dca059 Author: Tutorialzine Date: Sat May 28 17:52:14 2016 +0300 Initial commit
Как вы можете заметить, идентификаторы довольно длинные, но для работы с ними не обязательно копировать их целиком — первых нескольких символов будет вполне достаточно. Чтобы посмотреть, что нового появилось в коммите, мы можем воспользоваться командой show [commit]
$ git show b10cc123 commit b10cc1238e355c02a044ef9f9860811ff605c9b4 Author: Tutorialzine Date: Mon May 30 16:30:04 2016 +0300 Added content to hello.txt diff --git a/hello.txt b/hello.txt index e69de29..b546a21 100644 --- a/hello.txt +++ b/hello.txt @@ -0,0 +1 @@ +Nice weather today, isn't it?
Чтобы увидеть разницу между двумя коммитами, используется команда diff (с указанием промежутка между коммитами):
$ git diff 09bd8cc..ba25c0ff diff --git a/feature.txt b/feature.txt new file mode 100644 index 0000000..e69de29 diff --git a/hello.txt b/hello.txt index e69de29..b546a21 100644 --- a/hello.txt +++ b/hello.txt @@ -0,0 +1 @@ +Nice weather today, isn't it?
Мы сравнили первый коммит с последним, чтобы увидеть все изменения, которые были когда-либо сделаны. Обычно проще использовать git difftool, так как эта команда запускает графический клиент, в котором наглядно сопоставляет все изменения.
2. Возвращение файла к предыдущему состоянию
Гит позволяет вернуть выбранный файл к состоянию на момент определенного коммита. Это делается уже знакомой нам командой checkout, которую мы ранее использовали для переключения между ветками. Но она также может быть использована для переключения между коммитами (это довольно распространенная ситуация для Гита — использование одной команды для различных, на первый взгляд, слабо связанных задач).
В следующем примере мы возьмем файл hello.txt и откатим все изменения, совершенные над ним к первому коммиту. Чтобы сделать это, мы подставим в команду идентификатор нужного коммита, а также путь до файла:
$ git checkout 09bd8cc1 hello.txt
3. Исправление коммита
Если вы опечатались в комментарии или забыли добавить файл и заметили это сразу после того, как закоммитили изменения, вы легко можете это поправить при помощи commit —amend. Эта команда добавит все из последнего коммита в область подготовленных файлов и попытается сделать новый коммит. Это дает вам возможность поправить комментарий или добавить недостающие файлы в область подготовленных файлов.
Для более сложных исправлений, например, не в последнем коммите или если вы успели отправить изменения на сервер, нужно использовать revert. Эта команда создаст коммит, отменяющий изменения, совершенные в коммите с заданным идентификатором.
Самый последний коммит может быть доступен по алиасу HEAD:
$ git revert HEAD
Для остальных будем использовать идентификаторы:
$ git revert b10cc123
При отмене старых коммитов нужно быть готовым к тому, что возникнут конфликты. Такое случается, если файл был изменен еще одним, более новым коммитом. И теперь git не может найти строчки, состояние которых нужно откатить, так как они больше не существуют.
4. Разрешение конфликтов при слиянии
Помимо сценария, описанного в предыдущем пункте, конфликты регулярно возникают при слиянии ветвей или при отправке чужого кода. Иногда конфликты исправляются автоматически, но обычно с этим приходится разбираться вручную — решать, какой код остается, а какой нужно удалить.
Давайте посмотрим на примеры, где мы попытаемся слить две ветки под названием john_branch и tim_branch. И Тим, и Джон правят один и тот же файл: функцию, которая отображает элементы массива.
Джон использует цикл:
// Use a for loop to console.log contents. for(var i=0; i<arr.length; i++) { console.log(arr[i]); }
Тим предпочитает forEach:
// Use forEach to console.log contents. arr.forEach(function(item) { console.log(item); });
Они оба коммитят свой код в соответствующую ветку. Теперь, если они попытаются слить две ветки, они получат сообщение об ошибке:
$ git merge tim_branch Auto-merging print_array.js CONFLICT (content): Merge conflict in print_array.js Automatic merge failed; fix conflicts and then commit the result.
Система не смогла разрешить конфликт автоматически, значит, это придется сделать разработчикам. Приложение отметило строки, содержащие конфликт:
<<<<<<< HEAD // Use a for loop to console.log contents. for(var i=0; i<arr.length; i++) { console.log(arr[i]); } ======= // Use forEach to console.log contents. arr.forEach(function(item) { console.log(item); }); >>>>>>> Tim's commit.
Над разделителем ======= мы видим последний (HEAD) коммит, а под ним — конфликтующий. Таким образом, мы можем увидеть, чем они отличаются и решать, какая версия лучше. Или вовсе написать новую. В этой ситуации мы так и поступим, перепишем все, удалив разделители, и дадим git понять, что закончили.
// Not using for loop or forEach. // Use Array.toString() to console.log contents. console.log(arr.toString());
Когда все готово, нужно закоммитить изменения, чтобы закончить процесс:
$ git add -A $ git commit -m "Array printing conflict resolved."
Как вы можете заметить, процесс довольно утомительный и может быть очень сложным в больших проектах. Многие разработчики предпочитают использовать для разрешения конфликтов клиенты с графическим интерфейсом. (Для запуска нужно набрать git mergetool).
5. Настройка .gitignore
В большинстве проектов есть файлы или целые директории, в которые мы не хотим (и, скорее всего, не захотим) коммитить. Мы можем удостовериться, что они случайно не попадут в git add -A при помощи файла .gitignore
- Создайте вручную файл под названием .gitignore и сохраните его в директорию проекта.
- Внутри файла перечислите названия файлов/папок, которые нужно игнорировать, каждый с новой строки.
- Файл .gitignore должен быть добавлен, закоммичен и отправлен на сервер, как любой другой файл в проекте.
Вот хорошие примеры файлов, которые нужно игнорировать:
- Логи
- Артефакты систем сборки
- Папки node_modules в проектах node.js
- Папки, созданные IDE, например, Netbeans или IntelliJ
- Разнообразные заметки разработчика.
Файл .gitignore, исключающий все перечисленное выше, будет выглядеть так:
*.log build/ node_modules/ .idea/ my_notes.txt
Символ слэша в конце некоторых линий означает директорию (и тот факт, что мы рекурсивно игнорируем все ее содержимое). Звездочка, как обычно, означает шаблон.
Git bash и git.io
Руководствуясь часто встречающимися, при изучении системы, вопросами новичков, разберем еще несколько непонятных словосочетаний.
- Git Bash(Bourne Again Shell) — это приложение, являющееся эмулятором командной строки и предоставляющее, операционной системе, некоторые распространенные утилиты bash и собственно саму систему Git. Это терминал, используемый для взаимодействия с персональным компьютером, посредством письменных команд.
- URL-адреса хранилищ на Гитхабе могут быть довольно длинными, из-за больших имен репозиториев и файлов. Работать с такими ссылками очень не удобно. Поэтому сайт github.io создал git.io — неплохой сервис по преобразованию этих длинных и беспорядочных URL-адресов в более короткие и понятные. Сайт был создан в 2011 году и вплоть до недавнего времени отлично справлялся со своими обязанностями. Однако в начале этого года компания Гитхаб, из-за участившихся попыток хакеров использовать сайт в злонамеренных целях, остановила работу сервиса, а чем известила пользователей в своем блоге. Разработчики популярного ресурса рекомендуют пользоваться другими URL-cutter’ами, пока работа сервиса не будет налажена.
Заключение.
Вот и все! Наше руководство окончено. Мы очень старались собрать всю самую важную информацию и изложить ее как можно более сжато и кратко.
Git довольно сложен, и в нем есть еще много функций и трюков. Если вы хотите с ними познакомиться, вот некоторые ресурсы, которые мы рекомендуем:
- Официальная документация, включающая книгу и видеоуроки – тут.
- “Getting git right” – Коллекция руководств и статей от Atlassian – тут.
- Список клиентов с графическим интерфейсом – тут.
- Онлайн утилита для генерации .gitignore файлов – тут.
Оригинал статьи доступен на сайте http://tutorialzine.com
Другие статьи по теме
10 полезных Git команд, которые облегчат работу
Шпаргалка по Git, в которой представлены основные команды