Содержание

DVCS Git и TortoiseGit в картинках. Пособие для начинающих чайников.

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

Что такое git? git — это распределенная система управления версиями.

Не так давно проект «Google API в Delphi» успешно переехал на новый адрес и теперь находится под управлением распределенной системы контроля версий Git. Для чего и почему мы это сделали — это вопрос второстепенный, а вот работа с Git, по крайней мере для меня, стала основной. По сути этот пост ни что иное как шпаргалка для себя любимого по выполнению основных операций при работе Git, но может эта шпаргалка поможет кому-то как и мне начать работу с этой DVCS.

Если Вы работаете в Delphi, то в этой статье представлено пошаговое руководство по настройке и работе с Git непосредственно из IDE Delphi

Небольшое введение. О чем вообще пойдет речь

Git — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux.

То обстоятельство, что система создавалась «под Linux» уже как бы намекает на то, что без консоли нам не обойтись. Но не стоит махать руками и кричать «консоль отстой, git — в печь» и все такое. Поверьте — консоль Linux и консоль Windows имеют для обычного пользователя только одно общее свойство — чёрный экран при первом запуске. Команды Linux (ИМХО) просты и запоминаются без проблем, а работать с консолью не составляет особого труда даже для такого чайника, как я.

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

Это обстоятельство и поставило меня в начале работы с Git в тупик.
Как это так commit и не в центральный репозиторий?
Как правильно отправлять данные на сервер?
Как вообще начинать работу?

Эти и ещё многие другие вопросы посещали меня на старте работы с Git. Сейчас я не буду углубляться далеко в теоретические вопросы Git, да и вообще любых систем контроля версия — всего этого полно в Сети. А затрону один практический момент — как начать работу вообще, чтобы потом не было мучительно больно за бесцельно потерянные исходники.

Качаем и устанавливаем софт

Для работы с Git под Windows имеются вполне работоспособные и юзабельные решения, например, msysgit. Однако если Вы ранее имели опыт работы с SVN и использовали в работе TortoiseSVN, то видимо, Вам захочется иметь аналог подобного интерфейса и для Git? Нет проблем вот аналог TortoiseSVN для Git — TortoiseGit.
По сути TortoiseGit после нажатия команды из контекстного меню запускает консольную команду из MSysGit и рисует в окошко ее вывод. Если вы не хотите или просто не хватает времени детально разобраться в консольных командах Git, то TortoiseGit — то, что Вам нужно.
Итак, если Вы работаете под 32-х битной Windows, то Вам необходимо скачать следующий софт:

  1. msysgit — качаем Git-1.7.1-previewXXXXXXXX.exe (11,6 Mb) Git For Windows
  2. TortoiseGit. На момент написания статьи последней была версия TortoiseGit-1.5.2.0-32bit.msi (19.6 MB). Новые версии Вы можете найти также по приведенной ссылке.

Получается, что скачать нам надо чуть больше 30 Mb.
Теперь устанавливаем скачанные программы.

Вначале ставим msysgit, а потом TortoiseGit.

При установке msysgit настройки по умолчанию можно не изменять.
При установке TortoiseGit выбираем в окне «Choose SSH Client» второе значение:

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

Получаем доступ к репозиторию

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

1. Регистрация на GitHub’e.

Эта операция не отличается абсолютно ничем от всех прочих регистраций на других сайтах. Единственное, что нам необходимо обязательно запомнить — адрес email который мы указывали при регистрации. Этот адрес можно видеть на главной странице своего профиля:

Профиль на GitHub.com

2. Генерируем ключ для доступа по SSH.
Вот тут хочешь-не хочешь, а надо запускать консоль. После установки msysgit у Вас на рабочем столе появился новый ярлык —

Git Bush — вот с помощью него и запускаем консоль.

  1. Набираем в консоли следующую команду

    ssh-keygen -t rsa -C «E-Mail из Вашего профиля»

  2. На экране появится запрос «Enter file in which to save the key». Пока оставим значение по умолчанию. Жмем Enter.
  3. Нас попросят ввести пароль. Эту часть тоже пропускаем — впоследствии пароль можно будет установить, а пока — учимся. Жмем опять Enter.
  4. Сгенерируются два файла один из которых — публичный ключ для доступа.

Если Вы все делали с настройками по умолчанию то файлы будут располагаться в директории:

C:/Documents and Settings/UserName/.ssh/

Заходим в директорию, открываем с помощью «Блокнота» файл ida_rsa.pub и копируем все его содержимое в буфер обмена.

3. Заносим публичный ключ доступа в профиль.

Для записи публичного ключа в профиль:

  1. Заходим в свой профиль github и жмем ссылку Account Settings (сверху)
  2. Выбираем пункт «SSH Public Keys»
  3. Жмем ссылку «Add another public key»

Перед вами появится форма добавления нового публичного ключа. Вставляем из буфере весь скопированный ранее текст (из файла ida_rsa.

pub) только в поле key — поле Title оставляем пустым.

На этом работа с публичными ключами закончена.

4. Просимся в проект.

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

Работа со своим первым репозиорием Git

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

Итак, выбираем директорию на жестком диске где мы будем хранить все файлы. Далее действуем следующим образом:

1. Вызываем контекстное меню и выбираем пункт «TortoiseGit — Settings«:

В появившемся окне переходим сразу к пункту «Git — Config» и записываем свое имя и адрес электронной почты. Эти данные должны в точности совпадать с теми, что записаны в Вашем аккаунте на github, иначе ваш ключ просто не подойдет.

2. Клонируем репозиторий. Для этого заходим на страницу проекта, и копируем в буфер адрес:

Теперь жмем правой кнопкой мыши на директории, в которой будем хранить исходники и в меню выбираем «Git Clone..«:

В открывшемся окне в поле URL вставляем скопированный адрес и жмем «Ok»:

Начнется процесс клонирования репозитория.

Всё вышесказанное можно было бы заменить всего двумя командами в консоли:

cd path/to/dir
git clone URL

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

3. Создаем свою ветку. Для этого жмем правую кнопку мыши на директории в которую мы клонировали репозиторий и выбираем в меню «TortoiseGit — Create Branch«:

В открывшемся оке задаем название новой ветки и указываем на основании какой ветки репозитория мы будем создавать новую. Жмем «Ок», подтверждая создание ветки. Теперь переключаемся на свой новый branch.

Выбираем в меню «TortoiseGit — Switch/Checkout…«:

В открывшемся окне выбираем нашу новую ветку и жмем «Ок». Убеждаемся, что мы успешно переключились:

По сути, все что касалось создания нового branch’a в консоли решилось бы всего одной командой:

checkout -b new-branch

4. Программируем. Теперь, когда мы все настроили — открываем необходимый проект в Delphi, вносим свои коррективы, изменяем модули и т.д. В общем ведем нормальную плодотворную работу с проектом.

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

1. Вносятся изменения в проект

2. Изменения закрепляются в вашем локальном репозитории, используя команду Commit в меню или, используя консоль:

git commit

3. Когда Вам необходимо/удобно/требуется закрепить все изменения на сервере выполняем push в свою ветку (brunch). Команда консоли выглядит так:

git push origin <свое имя бранча>

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

Для этого выбираем новый файл, вызываем меню и выбираем «Add…»:

По рисунку можно видеть, что я вношу в индекс новый файл text.txt. Жмем «Ok».

После того как файл добавлен, можно сразу же сделать Commit — кнопка Commit появится в окне с выводом консоли. Жмем её и откроется окно для внесения Commit’a:

Заполняем поле с описанием, жмем «Ок»  и коммит готов. Если хотите сразу отправить эти изменения в репозиторий, то в окне с выводом консоли появится также кнопка PUSH. Если же Вас не устраивает таскать по 1 файлику туда-сюда или изменения столь незначительны, что их нет смысла отправлять на сервер, то просто продолжаете дальше кодить, а push выполним позднее.

Чтобы выполнить команду push можете поступить следующим образом:

1. Зажимаем Shift и вызываем контекстное меню. В меню должны появится дополнительные команды:

Выбираем команду Push. Перед Вами откроется окно следующего содержания:

Все, что от Вас требуется на данном этапе — нажать на кнопку (на рисунке она выделена красным) найти в списке удаленную ветку в которую вы делаете push и два раза нажать Ok. Все изменения, произведенные Вами в локальном репозитории отправятся в Сеть.

Вот пожалуй все, что мне пока потребовалось использовать при работе с новой для меня системой контроля версий. Надеюсь эта мини-шпаргалка поможет кому-нибудь кроме меня. А если Вас заинтересовала работа с консолью, то как раз сейчас я изучаю Вот такие топики на habrahabr.ru:
1. Git Workflow.
2. Git Wizardry
Статьи написаны понятным простым языком и касаются как раз работы с Git с нуля.

Книжная полка

Автор: Андрей Шкрыль

НазваниеРазработка клиент-серверных приложений в Delphi

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.

Автор: Антон Григорьев

НазваниеО чем не пишут в книгах по Delphi

Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi.

Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.

1 1 голос

Рейтинг статьи

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

Инструкция по работе с TortoiseGit и GitForWindows и др.

Git клиент

Git-это распределенная система управления версиями, что означает, что вы можете работать локально, но вы также можете делиться или “толкать” свои изменения на другие серверы. Прежде чем вы сможете перенести свои изменения на сервер Git, вам потребуется безопасный канал связи для обмена информацией.
Протокол SSH обеспечивает такую безопасность и позволяет вам аутентифицироваться на удаленном сервере Git, не указывая каждый раз свое имя пользователя или пароль.

Для генерации SSH ключа скачайте и установите  https://gitforwindows.org
Запустите C:\Program Files\Git\git-bash.exe или в контекстном меню проводника windows выберете «Git Bash Here».
В оболочке введите команду генерации ключа с вашим email адресом

ssh-keygen -t ed25519 -C «[email protected]»
При создании ключа, будут заданы дополнительные вопросы, есть возможность оставить все опции по умолчанию, нажав Enter.
После окончания генерации, будет создан файл C:\Users\nafanasev\.ssh\id_ed25519.pub
Полностью скопируйте содержимое файла и вставьте его в настройки своего профиля gitlab, User Settings — SSH Keys — Add key.

TortoiseGit

Установите TortoiseGit, все настройки можно оставить по умолчанию.

Создайте структуру папок, например:
C:/gitlab/nafanasev/test
где C:/gitlab/ просто папка
nafanasev соответствует названию группы проектов в gitlab — https://gitlab.local/nafanasev

а /test сам репозиторий — https://gitlab.local/nafanasev/test. git

Загрузка репозитория.
В контекстном меню папки C:/gitlab/nafanasev/ выберите TortoiseGit — Settings, в открывшемся окне выберете меню Git и введите Name и Email (должен совпадать с email введенным при генерации ключа). Сохраните изменения.
Вызовите контекстное меню папки C:/gitlab/nafanasev/ и выберете Git clone, в поле URL введите адрес репозитория, в следующем формате: https://gitlab.local/nafanasev/test.git и нажмите ОК. Файлы репозитория загрузятся в указанную папку.

Разработка.

Внесите необходимые изменения в файлы. Для сохранения изменений выполните Git Commit -> «master», в данном случае master это локальная ветка.
И отправьте изменения в gitlab, TortoiseGit — Push, выбрав в поле Remote ветку, отличную от master, обычно dev.

gitforwindows

Если вам не нужна дополнительная программа в виде TortoiseGit, можно ограничится только одним gitforwindows.
В первую очередь, добавьте хранилище кода gitlab в списки репозиториев gitforwindows.
В контекстном меню папки C:/gitlab/nafanasev/test и выберите «Git GUI Here», в открывшемся окне нажмите «Create New Repository». Выберете папку C:/gitlab/nafanasev/test и нажмите Create.
В открывшемся окне выберете Remote — Add и заполните поля
name — nafanasev/test
Location — ссылка вида https://gitlab.local/nafanasev/test.git

Загрузите файлы из репозитория.
Запустите C:\Program Files\Git\git-bash.exe и выполните git pull [email protected]:nafanasev/test.git

Разработка.
Создайте новую ветку Branch — Create, и введите ее имя.
Внесите необходимые изменения в файлы
Нажмите последовательно
Rescan
Stage Changed
заполните Commit Message
Commit
Push
Далее необходимо в gitlab создать merge request и смержить ветки.

IntelliJ IDEA

Откройте IntelliJ IDEA выберете VCS — Checkout from Version Control — Git
в поле URL введите ссылку на проект https://gitlab.local/nafanasev/test.git
выбирете папку для хранения проекта в поле Directory C:\gitlab\nafanasev\test
нажмите кнопку Test для проверки соединения
нажмите кнопку Clone
во всех появившихся окнах, выберете Yes и Next
дял commit нажмите Ctrl+K
для push нажмите Ctrl+Shift+K

Глава 2.

Руководство по ежедневному использованию TortoiseGit — TortoiseGit — Документация — TortoiseGit — Интерфейс оболочки Windows для Git 008
Контекстные меню
Перетаскивание
Общие Ярлыки
Аутентификация
Развернуть Windows
Создать репозиторий
Клонировать репозиторий
Извлечение рабочего дерева (переключение для фиксации)
Фиксация ваших изменений в репозиторий
Диалоговое окно фиксации
Списки изменений
Исключение элементов из списка фиксации
Фиксация только частей файлов
Журнал фиксации Сообщения
Выполнение фиксации
Получение информации о состоянии
Наложение значков
Свойства проводника
Статус
Просмотр различий
Извлечение и получение изменений
Push
Филиал
Адресат
Опции
Синхронизация
Филиал
Назначение
Опции
Демон
Просмотреть все ссылки
Подмодули
Списки изменений
Журнал Диалоговое окно
Вызов диалогового окна журнала изменений
Действия в журнале изменений
Граф изменений
Сообщения фиксации и индикаторы ветвей/тегов
Получение дополнительной информации
Фильтрация сообщений журнала
Навигация
Статистическая информация
Обновление представления
Графики изменений
Узлы графа изменений
Использование графа
Обновление представления
Справочник Журнал
Браузер репозитория
Просмотр различий
Различия файлов
Параметры конца строки и пробела
Сравнение версий
Сравнение субмодулей с помощью диалогового окна сравнения субмодулей
Сравнение изображений с помощью TortoiseGitIDiff
Внешние инструменты сравнения/слияния
Добавление новых файлов
9 0007 Копирование/перемещение/переименование файлов и папок
Игнорирование файлов и каталогов
Поиск по образцу в списках игнорирования
Удаление, перемещение и переименование
Удаление файлов и папок
9
Изменение регистра в имени файла 7 Сброс
Изменения тайника
Разделение пополам
Ветвление/маркировка
Создание ветки или тега
Слияние
Выбор вишни
Перебазирование
Разрешение конфликтов
Особые конфликтные ситуации
Создание и применение исправлений и запросов на вытягивание
Создание серийного номера исправления
Отправка исправлений по почте
Применение одного файла исправления
Применение серийного номера исправления
Создание запроса на включение
Кто какую строку изменил?
Авторство файлов
Экспорт рабочего дерева Git
Интеграция с системами отслеживания ошибок / системами отслеживания проблем
Добавление номеров проблем в сообщения журнала
Получение информации из средства отслеживания проблем
Настройки TortoiseGit
Общие настройки
Настройки наложения значков
Настройки сети
Настройки внешней программы
Настройки сохраненных данных
Git
Скрипты хуков на стороне клиента
Настройки TortoiseGitBlame
Настройки TortoiseGitUDiff
Дополнительные настройки
Экспорт настроек TortoiseGit
Работа с рабочими деревьями
Создание рабочего дерева
git svn dcommit
Блокировка Git LFS
Настройка репозитория
Блокировка файла
Разблокировка файла
Показать диалоговое окно блокировки
Последний шаг

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

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

Этот документ также находится в стадии разработки, как и TortoiseGit и Git. Если вы обнаружите какие-либо ошибки, пожалуйста, сообщите о них в список рассылки, чтобы мы могли обновить документацию. Некоторые снимки экрана в Руководстве по ежедневному использованию (DUG) могут не отражать текущее состояние программного обеспечения. Пожалуйста, простите нас. Мы работаем над TortoiseGit в свободное время.

Чтобы получить максимальную отдачу от Руководства по ежедневному использованию:

  • Вы уже должны были установить TortoiseGit.

  • Вы должны быть знакомы с системами контроля версий.

  • Вы должны знать основы Git.

  • У вас должен быть настроен сервер и/или доступ к репозиторию Git.

Наложения значков

Рисунок 2.1. Проводник с наложением значков


Одной из наиболее заметных функций TortoiseGit являются наложения значков, которые появляются на файлах в вашем рабочем дереве. Они сразу показывают, какие из ваших файлов были изменены. Обратитесь к разделу «Наложения значков», чтобы узнать, что представляют собой различные наложения.

Контекстные меню

Рисунок 2.2. Контекстное меню для каталога под контролем версий


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

Совет

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

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

Рисунок 2.3. Меню файла проводника для ярлыка в версионной папке


Этот пример относится к неверсионному ярлыку в версионной папке, а в меню файлов проводника есть две записи для TortoiseGit. Один для самого ярлыка, а второй для объекта, на который указывает ярлык. Чтобы помочь вам различать их, значки имеют индикатор в правом нижнем углу, показывающий, предназначен ли пункт меню для файла, папки, ярлыка или для нескольких выбранных элементов.

Перетаскивание

Рисунок 2.4. Меню перетаскивания правой кнопкой мыши для каталога с контролем версий


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

Общие ярлыки

Некоторые общие операции имеют хорошо известные ярлыки Windows, но не отображаются на кнопках или в меню. Если вы не можете понять, как сделать что-то очевидное, например обновить представление, проверьте здесь.

F1

Помощь, конечно.

F5

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

Ctrl-A

Выбрать все. Это можно использовать, если вы получили сообщение об ошибке и хотите скопировать и вставить его в электронное письмо. Используйте Ctrl-A, чтобы выбрать сообщение об ошибке, а затем …

Ctrl-C

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

Ctrl-F

Поиск

Аутентификация

SSH (URL выглядят как [email protected])

В качестве клиента SSH рекомендуется использовать TortoiseGitPlink, поскольку он лучше интегрируется с Windows. По умолчанию TortoiseGitPlink не хранит пароли, вы можете использовать агент аутентификации PuTTY для кэширования пароля (выполняется автоматически, если ключ PuTTY настроен для удаленного доступа). Дополнительные советы и рекомендации см. в Приложении F, 9.0433 Советы и рекомендации по SSH/PuTTY . Обратите внимание, однако, что TortoiseGitPlink не учитывает ~/.ssh/config , который специфичен для OpenSSH (см. советы и рекомендации по PuTTY или настройте OpenSSH в качестве клиента SSH, см. следующий абзац). Если вы также хотите использовать TortoiseGitPlink в Git Bash, создайте переменную среды с именем GIT_SSH с путем к PuTTY plink.exe или, что предпочтительнее, к TortoiseGitPlink. exe. Это можно сделать, повторно запустив установщик Git для Windows (там вы можете выбрать, какой SSH-клиент использовать), в командной строке, выполнив установите GIT_SSH=PATH_TO_PLINK.EXE" ( C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe при установке по умолчанию) или настройте переменные среды на постоянной основе .

Также можно использовать OpenSSH (поставляется с Git для Windows, Cygwin и MSYS2). Просто откройте настройки TortoiseGit, откройте страницу «Сеть» и введите ssh.exe в качестве клиента SSH, см. раздел «Настройки сети» и этот ответ на StackOverflow . Когда используется OpenSSH , вы также можете использовать ~/.ssh/config (см. этот ответ на StackOverflow ).

HTTP/HTTPS (URL-адреса начинаются с https:// или http://)

По умолчанию Git не сохраняет и не кэширует учетные данные. Однако вы можете настроить помощник по учетным данным (рекомендуется, см. также справочную страницу gitcredentials(7)) или вручную использовать %HOME%/_netrc .

Если вы настроили хранилище учетных данных и хотите очистить некоторые сохраненные учетные данные, см. этот ответ на StackOverflow .

Развертывание Windows

Многие диалоговые окна TortoiseGit содержат много информации для отображения, но часто бывает полезно максимизировать только высоту или только ширину, а не максимизировать до заполнения экрана. Для удобства на кнопке «Развернуть» есть ярлыки. Используйте среднюю кнопку мыши для увеличения по вертикали и правую кнопку мыши для увеличения по горизонтали.

© TortoiseGit и участники; Патчи, предложения и комментарии к этому руководству приветствуются на GitLab. Выходные данные/Политика конфиденциальности

Фиксация ваших изменений в репозиторий — TortoiseGit — Документация — TortoiseGit — Интерфейс оболочки Windows для Git

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

Диалоговое окно фиксации

Если конфликтов нет, вы готовы зафиксировать изменения. Выберите любой файл и/или папку, которые вы хотите зафиксировать, затем TortoiseGit → Зафиксировать….

Рисунок 2.9. Диалоговое окно фиксации

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

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

Много неверсионных файлов в диалоговом окне фиксации

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

Прочтите раздел «Игнорирование файлов и каталогов» для получения дополнительной информации.

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

Вы можете выбрать или отменить выбор элементов, установив флажок слева от элемента.

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

Цветовой код различных предметов описан в разделе «Статус».

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

Перетаскивание

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

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

Коммиты являются только локальными

Обратите внимание, что все коммиты являются только локальными и влияют только на ваше локальное рабочее дерево. Чтобы поделиться ими с другими, вам нужно отправить их в удаленный репозиторий. Дополнительную информацию см. в разделе «Push» и в разделе «Sync».

Списки изменений

Диалоговое окно фиксации поддерживает функцию списка изменений, помогающую группировать связанные файлы вместе. Узнайте об этой функции в разделе «Списки изменений».

Исключение элементов из списка фиксации

Иногда у вас есть версии файлов, которые часто изменяются, но вы действительно не хотите их фиксировать. Иногда это указывает на ошибку в процессе сборки — почему эти файлы имеют версии? следует ли использовать файлы шаблонов? Но иногда это неизбежно. Классическая причина заключается в том, что ваша среда IDE изменяет отметку времени в файле проекта каждый раз при сборке. Файл проекта должен иметь версию, так как он включает все параметры сборки, но его не нужно фиксировать только потому, что отметка времени изменилась.

Чтобы помочь в подобных неудобных случаях, для файлов Git существует флаг skip-worktree — тогда файлы рассматриваются как немодифицированные, и Git также отказывается объединять файлы при слиянии/вытягивании (см. git-update-index (1) справочная страница). В качестве еще одного способа справиться с подобными случаями мы зарезервировали список изменений под названием ignore-on-commit . Любой файл, добавленный в этот список изменений, будет автоматически снят с отметки в диалоговом окне фиксации. Вы по-прежнему можете фиксировать изменения, но вам нужно выбрать их вручную в диалоговом окне фиксации.

Зафиксировать только части файлов

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

Щелкните файл правой кнопкой мыши и выберите Контекстное меню → Восстановить после фиксации. Это создаст копию файла как есть. Затем вы можете отредактировать файл, например. в TortoiseGitMerge и отмените все изменения, которые вы не хотите фиксировать. После сохранения этих изменений вы можете зафиксировать файл.

Использование TortoiseGitMerge

Если вы используете TortoiseGitMerge для редактирования файла, вы можете либо отредактировать изменения, как вы привыкли, либо отметить все изменения, которые вы хотите включить. щелкните правой кнопкой мыши измененный блок и используйте контекстное меню → Отметить этот блок, чтобы включить это изменение. Наконец, щелкните правой кнопкой мыши и используйте контекстное меню → Использовать левый файл, кроме отмеченных блоков, которые инвертируют ваши изменения (неотмеченные блоки), которые вы не хотите, чтобы они отображались в текущей фиксации.

После завершения фиксации копия файла восстанавливается автоматически, и у вас есть файл со всеми вашими изменениями, которые не были зафиксированы.

Сообщения журнала фиксации

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

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

Рисунок 2.10. Диалоговое окно фиксации Проверка орфографии


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

Окно сообщения журнала также включает в себя имя файла и функцию автоматического завершения. При этом используются регулярные выражения для извлечения имен классов и функций из (текстовых) файлов, которые вы фиксируете, а также самих имен файлов. Если слово, которое вы вводите, соответствует чему-либо в списке (после того, как вы ввели не менее 3 символов или нажали Ctrl+Space ), появится раскрывающийся список, позволяющий выбрать полное имя. Регулярные выражения, поставляемые с TortoiseGit, хранятся в установке TortoiseGit 9.Папка 0435 бин . Вы также можете определить свои собственные регулярные выражения и сохранить их в %APPDATA%\TortoiseGit\autolist.txt . Конечно, ваш личный автосписок не будет перезаписан при обновлении установки TortoiseGit. Если вы не знакомы с регулярными выражениями, ознакомьтесь с введением по адресу https://en. wikipedia.org/wiki/Regular_expression , а также с онлайн-документацией и учебным пособием по адресу https://www.regular-expressions.info. / .

Получение правильного регулярного выражения может быть сложной задачей, поэтому, чтобы помочь вам выбрать подходящее выражение, существует тестовый диалог, который позволяет вам ввести выражение, а затем ввести имена файлов для его проверки. Запустите его из командной строки с помощью команды TortoiseGitProc.exe /command:autotexttest .

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

Окно сообщения журнала также содержит средство фрагмента сообщения фиксации. Эти фрагменты отображаются в раскрывающемся списке автозаполнения, когда вы вводите ярлык фрагмента и выбираете фрагмент в раскрывающемся списке автозаполнения, а затем вставляете полный текст фрагмента. Фрагменты, поставляемые с TortoiseGit, хранятся в установке TortoiseGit 9.Папка 0435 бин . Вы также можете определить свои собственные фрагменты и сохранить их в %APPDATA%\TortoiseGit\snippet.txt . # — символ комментария. Используйте управляющие последовательности \t , \r , \n и \\ .

Вы можете добавить свое имя и адрес электронной почты в конец сообщения журнала, нажав кнопку «Добавить подпись».

Вы можете очистить все сохраненные сообщения фиксации на странице «Сохраненные данные» настроек TortoiseGit или очистить отдельные сообщения в диалоговом окне «Последние сообщения», используя кнопку Удалить ключ .

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

Другой способ вставить пути в сообщение журнала — просто перетащить файлы из списка файлов в поле редактирования.

Использование клавиатуры

Вы можете получить доступ к кнопке OK с клавиатуры, нажав Ctrl+return .

Интеграция со средствами отслеживания ошибок

Если вы активировали систему отслеживания ошибок, вы можете указать одну или несколько проблем в текстовом поле «Идентификатор ошибки» / «Номер проблемы:». Несколько вопросов должны быть разделены запятыми. В качестве альтернативы, если вы используете поддержку отслеживания ошибок на основе регулярных выражений, просто добавьте ссылки на свои проблемы как часть сообщения журнала. Подробнее читайте в разделе «Интеграция с системами отслеживания ошибок/системами отслеживания проблем».

Отрегулируйте размер текстового поля сообщения

Наведите указатель мыши на зазор между групповым полем «Сообщение» и групповым полем «Внесенные изменения», затем перетащите разделитель.

Зафиксировать новую ветку

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

Подтвердить несколько раз подряд и напрямую отправить изменения

Главная кнопка Подтвердить имеет раскрывающееся меню. Есть варианты ReCommit и Commit & push. Опция ReCommit фиксирует ваши изменения и оставляет диалоговое окно Commit открытым, так что вы можете продолжить фиксацию. Последний вариант «Зафиксировать и отправить» зафиксирует ваши изменения и немедленно отправит их. Если для текущей активной ветви не настроена ветка удаленного отслеживания, открывается диалоговое окно push (см. раздел «Push»).

Ход выполнения фиксации

После нажатия кнопки «Подтвердить» появляется диалоговое окно, отображающее ход выполнения фиксации.

Рисунок 2.11. Диалоговое окно Progress, показывающее процесс фиксации

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