Поделиться через


Сохраняйте работу с помощью коммитов

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Visual Studio 2019 | Visual Studio 2022

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

В этой статье приведены процедуры для следующих задач:

  • Как Git отслеживает изменения
  • Что такое коммит
  • Подготовка изменений
  • Создание коммита
  • Как обновить последний коммит

Общие сведения о рабочем процессе Git см. в руководстве по Azure Repos Git.

Предпосылки

Категория Требования
доступ к проекту Член проекта.
Разрешения — Просмотр кода в частных проектах: по крайней мере базовый доступ.
— Клонировать или вносить вклад в код в частных проектах: быть членом группы безопасности "Участники" или иметь соответствующие разрешения в проекте.
— Установка разрешений для ветви или репозитория: Управление разрешениями предназначено для управления ветви или репозитория.
— Изменение ветви по умолчанию: политики редактирования — это разрешения для репозитория.
— Импорт репозитория: член группы безопасности администраторов проектов или разрешение на уровне проекта Git Создать репозиторий, установленное в Разрешить. Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git".
Services Репозиторий активирован.
Инструменты Необязательно. Используйте az repos команды: Azure DevOps CLI.

Замечание

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

Категория Требования
доступ к проекту Член проекта.
Разрешения — Просмотр кода: по крайней мере базовый доступ.
— Клонирование или внесение изменений в код: член группы безопасности Contributors или обладание соответствующими разрешениями в проекте.
Services Репозиторий активирован.

Как Git отслеживает изменения

При работе в репозитории Git отслеживает изменения всех отслеживаемых файлов. Отслеживаемые файлы — это файлы, которые в настоящее время индексированы или включены в предыдущий коммит. Git разделяет отслеживаемые файлы на три категории:

  • Неизмененные файлы — файлы, которые вы не изменили с момента последней фиксации.
  • Измененные файлы — это файлы, которые вы изменили с момента последней фиксации, но ещё не добавили в индекс для следующей фиксации.
  • Отслеживаемые файлы — это файлы, которые вы изменили с момента последнего коммита и добавили в область подготовленных для следующего коммита.

Снимок экрана: жизненный цикл файлов в репозитории между тремя состояниями.

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

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

Что такое коммит

Каждый коммит содержит следующие сведения:

  • Моментальный снимок всех отслеживаемых файлов в репозитории на момент коммита. Моментальный снимок — это не разница между фиксациями, хотя Git использует моментальные снимки для вычисления этой разницы. Моментальные снимки позволяют быстро переключаться между ветвями и поддерживать объединение ветвей.
  • Ссылка на родительский коммит. Большинство фиксаций имеют одного родителя, но следующая фиксация после слияния ветви содержит несколько родителей, а первая фиксация в репозитории отсутствует.
  • Сообщение, описывающее изменения в коммите. Введите сообщение в момент создания коммита.

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

Подготовка изменений

Чтобы создать снимок для коммита:

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

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

Замечание

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

Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в обозревателе решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Explorer Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Explorer .

В окне "Изменения Git" щелкните правой кнопкой мыши файл в разделе "Изменения " и выберите "Этап ", чтобы добавить его в раздел "Поэтапное изменение ".

Снимок экрана: параметр

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

Вы можете сообщить Git игнорировать файл, щелкнув его правой кнопкой мыши и выбрав "Игнорировать этот локальный элемент " или "Пропустить это расширение". Любая команда создает файл gitignore в репозитории, если он не существует, и добавляет в него запись. Пропущенные файлы не отображаются в разделе "Изменения" в Visual Studio. Однако файл .gitignore не влияет на отслеживаемые файлы. Сведения о настройке Git для пропуска отслеживаемых файлов см. в разделе "Игнорировать файлы". Чтобы сэкономить время, вы можете скачать gitignore шаблоны для различных сред разработки из репозитория GitHub gitignore .

Замечание

Начиная с Visual Studio 2022 версии 17.3 Visual Studio поддерживает промежуточные частичные изменения в файле. Дополнительные сведения см. в разделе "Этапы кода" в Visual Studio.

Создание коммита

В окне Git Changes введите сообщение, описывающее стейджированные изменения, а затем выберите зафиксировать стейджированные.

Снимок экрана: ссылка на информацию об изменении в Visual Studio.

Выберите ссылку коммита, чтобы просмотреть его детали.

Снимок экрана, показывающий ссылку на детали коммита в окне

Замечание

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

Снимок экрана: параметр

Как обновить последний коммит

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

Предупреждение

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

  • Создайте и отправьте еще один коммит, который исправляет ошибки, вызванные предыдущим коммитом.
  • Отмените предварительную фиксацию, которая была отправлена, используя git revert для создания новой фиксации, которая отменяет все изменения, внесенные предыдущей фиксацией. Затем отправьте новый коммит.

В окне "Изменения Git" при необходимости добавьте к этапу один или несколько файлов, введите сообщение фиксации, выберите "Исправить", а затем выберите "Зафиксировать изменения".

Скриншот, показывающий опцию

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

Дальнейшие шаги