Изменения

Зафиксировать изменения в локальном репозитории (commit)

Совет: Можете посмотреть пример Зафиксировать изменения конфигурации.
Зафиксировать из панели «Навигатор»
Это рекомендуемый способ фиксации:
  1. В панели Навигатор нажмите Групповая разработка > Коммит... в контекстном меню проекта;

    1C:EDT откроет панель Индексирование Git и перенесет в индекс измененные файлы, которые уже находятся под версионным контролем;

  2. Если в поле Неиндексированные изменения есть файлы, нажмите (Добавить все файлы в индекс) в контекстном меню этого поля;
  3. Напишите сообщение коммита;
  4. Нажмите Фиксировать.
Зафиксировать из панели «Индексирование Git»
  1. Откройте панель Индексирование Git;
  2. Нажмите (Добавить все файлы в индекс) в контекстном меню поля Неиндексированные изменения;
  3. Напишите сообщение коммита;
  4. Нажмите Фиксировать.

Панель Индексирование Git всегда показывает текущее состояние файлов в выбранном репозитории.

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

Сообщение коммита
Мы рекомендуем придерживаться следующей структуры сообщения:
  • Первая строка — заголовок, коротко описывает основной смысл изменений;
  • Пустая строка;
  • Тело сообщения — содержит подробное описание изменений. Одна или несколько строк. Тело может отсутствовать, если достаточно заголовка;
  • Пустая строка;
  • Дополнительные теги, специфичные для данного проекта или для дополнительных систем анализа кода, с которыми осуществляется совместная работа.
Например, коммит может выглядеть следующим образом:
Заголовок коммита

Изменение 1
Изменение 2
Изменение 3

Change-Id: I0000000000000000000000000000000000000000
Signed-off-by: admin <admin@example.com>
  • Change-Id: — используется для взаимодействия с Gerrit Code Review;
  • Signed-off-by: — используется разными системами управления проектами.

Для автоматического добавления тегов используйте переключатели (Добавить Change-Id) и (Добавить Signed-off-by) в командной панели поля Сообщение коммита.

Отказаться от незафиксированных изменений в рабочем каталоге

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

О том, что файлы в рабочем каталоге изменены, говорит угловая кавычка слева от имени проекта, например:

  1. Откройте панель Индексирование Git;
  2. Нажмите (Hide Untracked Files) в командной панели поля Неиндексированные изменения, чтобы остались только файлы, находящиеся под версионным контролем;
  3. Нажмите Ctrl+A, чтобы выделить все файлы;
  4. Нажмите Заменить на HEAD-ревизию;
  5. Еще раз нажмите (Hide Untracked Files) в командной панели поля Неиндексированные изменения;
  6. Нажмите Ctrl+A, чтобы выделить все файлы;
  7. Нажмите Удалить в контекстном меню.

После этого проект вернется в исходное состояние: поля панели Индексирование Git очистятся, угловая кавычка слева от имени проекта исчезнет.

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

В панели «Навигатор»
  1. Откройте панель Навигатор;
  2. Нажмите Групповая разработка > Расширенные возможности > > Сбросить... в контекстном меню проекта;
  3. Выберите ссылку HEAD или текущую ветку;
  4. Установите переключатель Жестко (HEAD, индекс и рабочий каталог);
  5. Нажмите Сброс.
В панели «История»
  1. Откройте панель История;
  2. Нажмите Сброс > Жестко (HEAD, индекс и рабочий каталог) в контекстном меню коммита, отмеченного ссылкой HEAD.
В панели «Репозитории Git»
  1. Откройте панель Репозитории Git;
  2. Нажмите Отменить... > Жестко (HEAD, индекс и рабочий каталог) в контекстном меню текущей ветки.

Добавить изменения в индекс (Add)

Есть несколько способов индексировать файл:
  • В панели Индексирование Git:
    • Перетащите файл из поля Неиндексированные изменения в поле Индексированные изменения;
    • Выделите файл в поле Неиндексированные изменения и нажмите (Добавить выбранные файлы в индекс) в командной панели или нажмите Добавить в индекс в контекстном меню файла;
    • Чтобы индексировать все файлы, нажмите (Добавить все файлы в индекс) в командной панели.
  • В панели Навигатор нажмите Групповая разработка > Добавить в индекс в контекстном меню проекта;
  • В панели Репозитории Git нажмите Добавить в индекс в контекстном меню рабочего каталога.

Удалить изменения из индекса (rm)

Есть несколько способов удалить изменения из индекса:
  • В панели Индексирование Git:
    • Перетащите файл из поля Индексированные изменения в поле Неиндексированные изменения;
    • Выделите файл в поле Неиндексированные изменения и нажмите (Убрать выбранные файлы из индекса) в командной панели или нажмите Удалить из индекса
    • в контекстном меню файла;
    • Чтобы удалить из индекса все файлы, нажмите (Убрать все файлы из индекса) в командной панели.
  • В панели Навигатор нажмите Групповая разработка > Удалить из индекса.

Спрятать изменения (stash)

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

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

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

Спрятать изменения
Есть несколько способов спрятать изменения:
  • Заранее. В панели Навигатор нажмите Групповая разработка > Спрятанные изменения > Спрятать изменения... в контекстном меню проекта;
  • Во время извлечения новой ветки. Нажмите Спрятать... в диалоге незафиксированных изменений.
Назначение полей:
  • Введите сообщение (не обязательно) — любое сообщение, которое поможет вам идентифицировать спрятанные изменения;
  • Включить неотслеживаемые файлы — стандартно 1C:EDT прячет только измененные и проиндексированные отслеживаемые файлы. Если вы хотите спрятать и неотслеживаемые файлы, которые вы создали, установите этот флажок.

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

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

Вернуть изменения, отложенные ранее
  1. Переключитесь на ветку, изменения которой вы отложили;
  2. В панели Навигатор нажмите Групповая разработка > Спрятанные изменения > № <название отложенных изменений> в контекстном меню проекта. 1С:EDT откроет панель просмотра отложенного коммита;
  3. Нажмите (Применить накопленные изменения) в командной панели этой панели. Сохраненные изменения будут возвращены в рабочий каталог;
  4. Закройте панель просмотра отложенного коммита и продолжите работу над отложенной задачей.
Удалить спрятанные изменения
  1. В панели Навигатор нажмите Групповая разработка > Спрятанные изменения > № <название отложенных изменений> в контекстном меню проекта. 1С:EDT откроет панель просмотра отложенного коммита;
  2. Нажмите (Удалить накопленные изменения) в командной панели этой панели.

Сбросить изменения в рабочем каталоге к некоторому коммиту (reset)

Можно сбросить рабочий каталог к состоянию, которое он имел на момент некоторого коммита, ветки или метки.

Сбросить на коммит
  1. Откройте панель История;
  2. Найдите нужный коммит;
  3. Нажмите в контекстом меню Сброс, а затем выберите нужный способ:
    • Мягко (только HEAD)указатель HEAD будет указывать на этот коммит, а индекс и рабочий каталог останутся без изменений;
    • Средне (HEAD и индекс)указатель HEAD будет указывать на этот коммит, индекс будет соответствовать этому коммиту, а рабочий каталог останется без изменений;
    • Жестко (HEAD, индекс и рабочий каталог)указатель HEAD будет указывать на этот коммит, индекс и рабочий каталог будут соответствовать этому коммиту;
Сбросить на ветку или метку
  • Откройте панель Навигатор
  • Нажмите Групповая разработка Расширенные возможности > Сбросить...;
    • Выберите нужную ветку или метку;
    • Выберите нужный способ:
      • Мягко (только HEAD)указатель HEAD будет указывать на этот коммит, а индекс и рабочий каталог останутся без изменений;
      • Средне (HEAD и индекс)указатель HEAD будет указывать на этот коммит, индекс будет соответствовать этому коммиту, а рабочий каталог останется без изменений;
      • Жестко (HEAD, индекс и рабочий каталог)указатель HEAD будет указывать на этот коммит, индекс и рабочий каталог будут соответствовать этому коммиту;
    • Нажмите Сброс.

Просмотр коммитов

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

Открыть коммит в панели просмотра можно несколькими способами:

Командная панель
  • <имя репозитория> — выделяет в панели Репозитории Git тот репозиторий, которому принадлежит этот коммит;
  • (Создать метку...)создает метку;;
  • (Создать ветку...)создает новую ветку средствами Git (без связи с информационной базой);
  • (Извлечь...)если выбранный коммит указывает на ветку, то переключает проект на этот коммит. В противном случае извлекает выбранный коммит в рабочий каталог в состоянии «отсоединенный HEAD»;
  • (Cherry-Pick...)копирует этот коммит и применяет его после текущего коммита;
  • (Отменить коммит)отменяет изменения, выполненные этим коммитом, путем создания нового коммита;
  • (Показать в истории) — выделяет этот коммит в панели История.
Назначение полей
  • Родитель — открывает родительский коммит в панели просмотра;
  • Метки — список меток, указывающих на этот коммит;
  • Сообщение — сообщение коммита;
  • Ветки — список веток, в которых существует этот коммит;
  • Файлы — файлы, измененные этим коммитом.

Вернуть к предыдущему состоянию (revert)

Например, вы зафиксировали изменения и через какое-то время поняли, что они вам не подходят. Вы решили пока не включать эту функциональность в ваш продукт.

Можно создать другой коммит, который откатит все изменения, сделанные этим коммитом.

Вернуть к предыдущему состоянию после последнего коммита
  1. Откройте панели История;
  2. Нажмите Отменить коммит в контекстном меню коммита;
  3. Нажмите Отменить коммит.
Вернуть к предыдущему состоянию после коммита слияния

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

Например, в ветку master вы влили новую функциональность из ветки task. Затем вы решили что пока не нужно включать эту функциональность в master.

У коммита слияния два родителя: 5db23a2 (master) и 53d6cd2 (task). При отмене вам нужно указать на втором шаге коммит 5db23a2 (master).

Результат отмены будет выглядеть следующим образом:

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

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

Например, вы добавили справочник Запасы, который потом переименовали в Припасы, а в итоге он получил имя Ресурсы. Теперь вы хотите вернуть предыдущее состояние перед коммитом c37ec84 Запасы —> Припасы. В результате вы получите конфликт.

С одной стороны, из-за отмены коммита, вроде бы должно вернуться прежнее название, Запасы. Но с другой стороны оно уже было впоследствии изменено на Ресурсы. Какое из двух имен выбрать, вам необходимо решить вручную.