уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Что такое 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, то Вам необходимо скачать следующий софт:
Получается, что скачать нам надо чуть больше 30 Mb.
Теперь устанавливаем скачанные программы.
Вначале ставим msysgit, а потом TortoiseGit.
При установке msysgit настройки по умолчанию можно не изменять.
При установке TortoiseGit выбираем в окне «Choose SSH Client» второе значение:
После успешной установки обоих продуктов работу над первым этапом можно считать завершенной. Приступим ко второму — получение доступа к репозиторию Git.
В качестве примера я буду рассматривать получение доступа к нашему репозиторию, который располагается на github.com.
Распишем все операции по шагам.
1. Регистрация на GitHub’e.
Эта операция не отличается абсолютно ничем от всех прочих регистраций на других сайтах. Единственное, что нам необходимо обязательно запомнить — адрес email который мы указывали при регистрации. Этот адрес можно видеть на главной странице своего профиля:
Профиль на GitHub.com
2. Генерируем ключ для доступа по SSH.
Вот тут хочешь-не хочешь, а надо запускать консоль. После установки msysgit у Вас на рабочем столе появился новый ярлык — Git Bush — вот с помощью него и запускаем консоль.
ssh-keygen -t rsa -C «E-Mail из Вашего профиля»
Если Вы все делали с настройками по умолчанию то файлы будут располагаться в директории:
C:/Documents and Settings/UserName/.ssh/
Заходим в директорию, открываем с помощью «Блокнота» файл ida_rsa.pub и копируем все его содержимое в буфер обмена.
3. Заносим публичный ключ доступа в профиль.
Для записи публичного ключа в профиль:
Перед вами появится форма добавления нового публичного ключа. Вставляем из буфере весь скопированный ранее текст (из файла ida_rsa. pub) только в поле key — поле Title оставляем пустым
.На этом работа с публичными ключами закончена.
4. Просимся в проект.
Для этого достаточно найти наш проект на github и отправить одному из администраторов запрос на предоставление доступа к репозиторию. Или просто отправить мне email с логином на github. После того как вы будите записаны в список разработчиков проекта можно переходить к следующей фазе работы — получение исходников.
Доступ получен, исходники в Вашем распоряжении. Теперь переключаемся на работу с 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 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Ссылка на оригинал Время создания: 07.06.2012 23:37 Раздел: Компьютер — Программирование — Системы контроля версий (VCS) — Git Запись: xintrea/mytetra_syncro/master/base/1339097829h0xmeapk1u/text.html на raw.github.com | |||||
Работа с Git репозиториями Почему Git Краткий ответ: потому что не появляются задержки от работы с системой контроля версий. Git хранит всё локально, включая историю, ветки, коммиты и позволяет переключаться между всем добром без обращения к сети. Авторизация в GIT производится по персональному ключу а не паролю, который кешируется на некоторое время на стороне клиента, а не запоминается навсегда в настройках клиента. GIT позволяет легко работать с ветками, без видоизменений раскладки репозитория, и древесный просмотр изменений позволяет видеть что из какой ветки пришло. Более подробно можно прочитать http://habrahabr.ru/blogs/Git/104198/ Общие сведения о Git Подробно о работе с Git, что это такое можно прочитать в Git Book по адресу http://book.git-scm.com/ В классических VCS (Version Control System) (CVS, SVN), в рабочей копии хранится текущее состояние репозитория, и базовая копия текущей ревизии. На сервере хранятся все ревизии в виде изменений от предыдущей, либо в виде полных копий каждой ревизии с вычислением разницы по запросу. Все ревизии нумеруются по порядку начиная от первой. В случае CVS хранятся изменения и нумерая по каждому файлу независимо, в случае SVN, нумеруются изменения репозитория. Так как SVN хранит только изменения всего репозитория, «ветки» в нем реализуются через специальную организацию файлов в хранилище. Классически, это /trunk/ для последнего кода, /branch/somename/ для веток. Для создания ветки, делается копия /trunk/ в /branch/somename/, над которым уже работает разработчик. При этом, при каждом коммите, идёт обращение к центральному репозиторию, для сохранения изменения, отрабатывают скрипты на сервере, идет непрерывная нумерация изменений, запрос истории так же требует обращения на сервер и т.д. Git относится к классу DVCS (Distributed Version Control System). При этом рабочая копия содержит все коммиты, историю, ветки, всё необходимое для ведения разработки без обращения к какому-либо серверу. Для синхронизации изменений между разными копиями репозитория, в нужный момент делается pull чтобы скопировать изменения удалённого репозитория к себе, либо push чтобы скопировать локальные изменения в удалённый репозиторий. Каждый коммит имеет один коммит-родитель, и, возможно, коммит-источник слияния. Таким образом, коммиты представляют собой дерево наборов файлов. «Веткой» является указатель на какой-либо коммит. Таким образом, чтобы создать ветку, нужно просто дать имя какому-либо коммиту. Чтобы слить две ветки, одна из которых начинается с конца другой, можно просто передвинуть указатель второй ветки на новый коммит (это называется Fast-Forward). Чтобы поддерживать «плоскую» основную ветку (master), используется техника ребейза веток перед слиянием, и слияение без fast-forward’а. Rebase означает смену родителя ветки на новый коммит. При ребейзе все изменения, внесенные в данной ветке, откатываются назад и сохраняются в виде изменений, внесенных каждым коммитом; после чего указатель ветки переносится на новое начало, и на него последовательно начинают применяться изменения. Если конфликтов нет, то изменения накладываются автоматически, после чего ветка представляет собой набор изменений относительно нового начала. Если теперь сделать слияние этой ветки с исходной, указатель головы исходной ветки будет просто передвинут на новое место, и мы потеряем информацию о том, что вообще существовала новая ветка. Именно поэтому используется слияние без fast-forward’а. При этом, даже если новая ветка начинается с конца предыдущей, создаётся специальный merge-commit, содержащий информацию о том, что в этом месте сливается текущая ветка с дополнительной. Подробнее о том, что такое rebase в картиках тут: http://book.git-scm.com/4_rebasing.html Алгоритм работы над задачей Стандартный алгоритм работы над какой-либо задачей выглядит так:
Правила ведения чистых коммитов Все коммиты, которые попадают в центральную ветку, должны следовать следующим правилам:
Работа под Windows Для работы с Git под Windows самое удобное – использовать TortoiseGit. Однако следует знать, что на 2017 год есть более удобный инструмент — SmartGit. Подготовка к работе
Получение репозитория В папке, где будут размещаться все рабочие проекты, жмём Основные используемые функции При работе используются либо консольные утилиты, аналогично linux, либо графический интерфейс.
Стандартные процедуры работы
Работа под Linux Подготовка к работе
Получение репозитория Переходим в директорию для работы, и запускаем git clone ssh://git@СЕРВЕР:ПОРТ/РЕПОЗИТОРИЙ.git Основные используемые функции
Стандартные процедуры работы
| |||||
Так же в этом разделе:
| |||||
|
Содержание
В этом документе описывается повседневное использование клиента 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, но не отображаются на кнопках или в меню. Если вы не можете понять, как сделать что-то очевидное, например обновить представление, проверьте здесь.
Помощь, конечно.
Обновить текущий вид. Это, пожалуй, самая полезная одноклавишная команда. Например… В Проводнике это обновит наложения значков на вашем рабочем дереве. В диалоговом окне фиксации он повторно просканирует рабочее дерево, чтобы увидеть, что может потребоваться зафиксировать. В диалоговом окне журнала изменений он снова свяжется с репозиторием, чтобы проверить наличие более свежих изменений.
Выбрать все. Это можно использовать, если вы получили сообщение об ошибке и хотите скопировать и вставить его в электронное письмо. Используйте Ctrl-A, чтобы выбрать сообщение об ошибке, а затем …
. .. Скопируйте выделенный текст.
Поиск
Tortoisegitplink рекомендуется, потому что SSH Client. Потому что SSH-Client. По умолчанию 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 ).
По умолчанию Git не сохраняет и не кэширует учетные данные. Однако вы можете настроить помощник по учетным данным (рекомендуется, см. также раздел «gitcredentials(7)») или вручную использовать %HOME%/_netrc
.
Если вы настроили хранилище учетных данных и хотите очистить некоторые сохраненные учетные данные, см. этот ответ на StackOverflow .
Многие диалоговые окна TortoiseGit содержат много информации для отображения, но часто бывает полезно максимизировать только высоту или только ширину, а не максимизировать до заполнения экрана. Для удобства на кнопке «Развернуть» есть ярлыки. Используйте среднюю кнопку мыши для увеличения по вертикали и правую кнопку мыши для увеличения по горизонтали.
© TortoiseGit и участники; Патчи, предложения и комментарии к этому руководству приветствуются на GitLab. Выходные данные/Политика конфиденциальности
Сохранение изменений, внесенных вами в ваше рабочее дерево, называется фиксацией изменений. вы можете использовать TortoiseGit → Сначала проверить наличие изменений, чтобы увидеть, какие файлы были изменены локально.
Если конфликтов нет, вы готовы зафиксировать изменения. Выберите любой файл и/или папку, которые вы хотите зафиксировать, затем TortoiseGit → Зафиксировать….
Рисунок 2.9. Диалоговое окно фиксации
Диалоговое окно фиксации покажет вам каждый измененный файл, включая добавленные, удаленные и неверсированные файлы. Если вы не хотите, чтобы измененный файл был зафиксирован, просто снимите этот флажок. Если вы хотите включить неверсионный файл, просто отметьте этот файл, чтобы добавить его в фиксацию.
В диалоговом окне фиксации по умолчанию просто перечислены выбранные пути и файлы их дочерних каталогов. Если вы хотите перечислить все файлы проекта, вы можете просто нажать Весь проект.
Если вы считаете, что в диалоговом окне фиксации отображается слишком много неверсионных (например, созданных компилятором или резервных копий редактора), существует несколько способов справиться с этим. Вы можете:
Прочтите раздел «Игнорирование файлов и каталогов» для получения дополнительной информации.
Двойной щелчок по любому измененному файлу в диалоговом окне фиксации запустит внешний инструмент сравнения, чтобы показать ваши изменения. Контекстное меню предоставит вам больше возможностей, как показано на скриншоте. Вы также можете перетаскивать файлы отсюда в другое приложение, например текстовый редактор или IDE.
Вы можете выбрать или отменить выбор элементов, установив флажок слева от элемента.
Столбцы, отображаемые в нижней панели, можно настраивать. Если вы щелкните правой кнопкой мыши заголовок любого столбца, вы увидите контекстное меню, позволяющее выбрать отображаемые столбцы. Вы также можете изменить ширину столбца с помощью маркера перетаскивания, который появляется при наведении указателя мыши на границу столбца. Эти настройки сохраняются, поэтому в следующий раз вы увидите те же заголовки.
Цветовой код различных предметов описан в разделе «Статус».
Обратите внимание, что в диалоговом окне фиксации всегда отображаются промежуточные файлы, даже если они были запущены в другой папке (это сделано для того, чтобы не забыть их зафиксировать, например, в случае слияния). Также в левом нижнем углу есть галочка Показать весь проект. Используйте это, чтобы переопределить фильтр файлов/папок и показать все измененные файлы для всего репозитория. Этот параметр запоминается для репозитория, даже если вы запустили диалог фиксации для одного файла.
Вы можете перетаскивать файлы в диалог фиксации из любого места, если рабочее дерево остается прежним. Например, у вас может быть огромное рабочее дерево с несколькими открытыми окнами проводника для просмотра удаленных папок иерархии. Если вы хотите избежать фиксации из папки верхнего уровня (с длительным сканированием папки для проверки изменений), вы можете открыть диалоговое окно фиксации для одной папки и перетащить элементы из других окон, чтобы включить их в ту же атомарную фиксацию.
Вы можете перетащить неверсионные файлы, находящиеся в рабочем дереве, в диалоговое окно фиксации, и они будут автоматически добавлены в Git.
Обратите внимание, что все коммиты являются только локальными и влияют только на ваше локальное рабочее дерево. Чтобы поделиться ими с другими, вам нужно отправить их в удаленный репозиторий. Дополнительную информацию см. в разделе «Push» и в разделе «Sync».
Диалоговое окно фиксации поддерживает функцию списка изменений, помогающую группировать связанные файлы вместе. Узнайте об этой функции в разделе «Списки изменений».
Иногда у вас есть версии файлов, которые часто изменяются, но вы действительно не хотите их фиксировать. Иногда это указывает на ошибку в процессе сборки — почему эти файлы имеют версии? следует ли использовать файлы шаблонов? Но иногда это неизбежно. Классическая причина заключается в том, что ваша среда IDE изменяет отметку времени в файле проекта каждый раз при сборке. Файл проекта должен иметь версию, так как он включает все параметры сборки, но его не нужно фиксировать только потому, что отметка времени изменилась.
Чтобы помочь в подобных неудобных случаях, для файлов Git существует флаг skip-worktree
— тогда файлы рассматриваются как неизмененные, и Git также отказывается объединять файлы при слиянии/вытягивании (см. раздел «ПРОПУСТИТЬ -РАБОЧИЙ БИТ»). В качестве еще одного способа справиться с подобными случаями мы зарезервировали список изменений под названием ignore-on-commit
. Любой файл, добавленный в этот список изменений, будет автоматически снят с отметки в диалоговом окне фиксации. Вы по-прежнему можете фиксировать изменения, но вам нужно выбрать их вручную в диалоговом окне фиксации.
Иногда требуется зафиксировать только части изменений, внесенных в файл. Такая ситуация обычно возникает, когда вы работаете над чем-то, но затем необходимо срочно внести исправление, и это исправление оказывается в том же файле, над которым вы работаете.
Щелкните файл правой кнопкой мыши и выберите Контекстное меню → Восстановить после фиксации. Это создаст копию файла как есть. Затем вы можете отредактировать файл, например. в 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. Диалоговое окно «Ход выполнения», показывающее выполнение фиксации
В левом нижнем углу есть кнопка меню, которая обеспечивает ярлыки для дальнейших шагов, таких как «Повторная фиксация» (сбрасывает диалоговое окно фиксации и позволяет продолжить фиксацию) или «Отправить», чтобы нажать коммит в удаленный репозиторий.