Зафиксировать изменения в локальном репозитории (commit)
-
- Зафиксировать из панели «Навигатор»
-
Это рекомендуемый способ фиксации:
- В панели Навигатор нажмите в контекстном меню проекта;
1C:EDT
откроет панель Индексирование
Git и перенесет в индекс измененные
файлы, которые уже находятся под версионным
контролем;
- Если в поле Неиндексированные изменения есть файлы, нажмите (Добавить
все файлы в индекс) в контекстном меню этого
поля;
- Напишите сообщение коммита;
- Нажмите Фиксировать.
- Зафиксировать из панели «Индексирование Git»
-
- Откройте панель Индексирование Git;
- Нажмите (Добавить
все файлы в индекс) в контекстном меню поля
Неиндексированные изменения;
- Напишите сообщение коммита;
- Нажмите Фиксировать.
Панель Индексирование 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) в командной панели поля Сообщение коммита.
Отказаться от незафиксированных изменений в рабочем каталоге
Например, все изменения в рабочем каталоге зафиксированы. Вы что-то изменили, но
потом решили отказаться от этих изменений. Как вернуть рабочий каталог в состояние,
которое было до внесения изменений?
О том, что файлы в рабочем каталоге изменены, говорит угловая кавычка слева от имени
проекта, например:
- Откройте панель Индексирование
Git;
- Нажмите (Hide Untracked Files)
в командной панели поля Неиндексированные изменения,
чтобы остались только файлы, находящиеся под версионным контролем;
- Нажмите Ctrl+A, чтобы выделить все файлы;
- Нажмите Заменить на HEAD-ревизию;
- Еще раз нажмите (Hide Untracked Files) в командной панели поля Неиндексированные
изменения;
- Нажмите Ctrl+A, чтобы выделить все файлы;
- Нажмите Удалить в
контекстном меню.
После этого проект вернется в исходное состояние: поля панели
Индексирование Git очистятся, угловая кавычка слева от
имени проекта исчезнет.
Есть и другие способы сделать то же самое, однако если вы добавляли новые файлы, то после
выполнения описанных ниже действий, их все равно нужно удалить через панель Индексирование Git:
-
- В панели «Навигатор»
-
- Откройте панель
Навигатор;
- Нажмите в контекстном меню проекта;
- Выберите ссылку HEAD или текущую ветку;
- Установите переключатель Жестко (HEAD, индекс и рабочий
каталог);
- Нажмите Сброс.
- В панели «История»
-
- Откройте панель
История;
- Нажмите в контекстном меню коммита,
отмеченного ссылкой HEAD.
- В панели «Репозитории Git»
-
- Откройте панель Репозитории
Git;
- Нажмите в контекстном меню текущей
ветки.
Добавить изменения в индекс (Add)
Есть несколько способов индексировать файл:
- В панели Индексирование Git:
- Перетащите файл из поля Неиндексированные изменения в поле Индексированные изменения;
- Выделите файл в поле Неиндексированные изменения и нажмите (Добавить выбранные файлы в
индекс) в командной панели или нажмите Добавить в индекс в контекстном меню файла;
- Чтобы индексировать все файлы, нажмите (Добавить
все файлы в индекс) в командной панели.
- В панели Навигатор нажмите в контекстном меню проекта;
- В панели Репозитории Git нажмите
Добавить в индекс в контекстном меню рабочего каталога.
Удалить изменения из индекса (rm)
Есть несколько
способов удалить изменения из индекса:
- В панели Индексирование
Git:
- Перетащите файл из поля Индексированные изменения в поле Неиндексированные изменения;
- Выделите файл в поле Неиндексированные изменения и нажмите (Убрать выбранные
файлы из индекса) в командной панели или нажмите Удалить из индекса
- в контекстном меню файла;
- Чтобы удалить из индекса все файлы, нажмите (Убрать все файлы из индекса) в командной панели.
- В панели Навигатор нажмите .
Спрятать изменения (stash)
Бывает так, что пока вы работаете над своей задачей в ветке feature,
например, вам приходит задание срочно исправить небольшую ошибку. Вы можете сделать
это в ветке master, пытаетесь переключиться на нее, но
получаете сообщение, что сделать это невозможно. В рабочем каталоге у вас есть
незафиксированные изменения.
Отказываться от этих изменений совсем нельзя, фиксировать работу, сделанную наполовину тоже не
хочется. Что делать?
В этом случае вам поможет припрятывание изменений. Эта операция берет ваши измененные
файлы из рабочего каталога, берет проиндексированные изменения, и сохраняет их в
хранилище незавершенных изменений. Затем вы можете переключиться на другую ветку и
выполнить срочную работу, например. После этого, чтобы вернуться к прерванной
задаче, можно применить обратно незавершенные изменения и продолжить работу.
-
- Спрятать изменения
-
Есть несколько способов спрятать изменения:
- Заранее. В панели Навигатор
нажмите в контекстном меню проекта;
- Во время извлечения новой ветки. Нажмите
Спрятать... в диалоге
незафиксированных изменений.
Назначение полей:
- Введите сообщение (не
обязательно) — любое сообщение,
которое поможет вам идентифицировать спрятанные
изменения;
- Включить неотслеживаемые файлы — стандартно 1C:EDT прячет
только измененные и проиндексированные отслеживаемые
файлы. Если вы хотите спрятать и неотслеживаемые
файлы, которые вы создали, установите этот
флажок.
Если вы прятали изменения заранее, то рабочий каталог будет
очищен от изменений и вы можете переключиться на другую
ветку.
Если вы прятали изменения во время переключения на другую
ветку, то после завершения всех операций другая ветка будет
извлечена и вы сможете начать работу в ней.
- Вернуть изменения, отложенные ранее
-
- Переключитесь на ветку, изменения которой вы
отложили;
- В панели Навигатор нажмите в контекстном меню проекта. 1С:EDT
откроет панель просмотра отложенного коммита;
- Нажмите (Применить накопленные изменения) в командной панели этой панели. Сохраненные изменения
будут возвращены в рабочий каталог;
- Закройте панель просмотра отложенного коммита и
продолжите работу над отложенной задачей.
- Удалить спрятанные изменения
-
- В панели Навигатор нажмите в контекстном меню проекта. 1С:EDT
откроет панель просмотра отложенного коммита;
- Нажмите (Удалить
накопленные изменения) в командной панели этой панели.
Сбросить изменения в рабочем каталоге к некоторому коммиту (reset)
Можно сбросить рабочий каталог к состоянию, которое он имел на момент некоторого коммита, ветки или метки.
-
- Сбросить на коммит
-
- Откройте панель История;
- Найдите нужный коммит;
- Нажмите в контекстом меню Сброс, а затем выберите нужный способ:
- Мягко (только HEAD) — указатель HEAD будет указывать на этот коммит, а индекс и
рабочий каталог останутся без изменений;
- Средне (HEAD и индекс) — указатель HEAD будет указывать на этот коммит,
индекс будет соответствовать этому коммиту, а рабочий каталог останется без
изменений;
- Жестко (HEAD, индекс и рабочий
каталог) — указатель HEAD будет указывать на этот
коммит, индекс и рабочий каталог будут соответствовать этому коммиту;
- Сбросить на ветку или метку
-
- Откройте панель Навигатор
- Нажмите Групповая разработка
Расширенные возможности >
Сбросить...;
- Выберите нужную ветку или метку;
- Выберите нужный способ:
- Мягко (только HEAD) — указатель HEAD будет указывать на этот коммит, а индекс и
рабочий каталог останутся без изменений;
- Средне (HEAD и индекс) — указатель HEAD будет указывать на этот коммит,
индекс будет соответствовать этому коммиту, а рабочий каталог останется без
изменений;
- Жестко (HEAD, индекс и рабочий
каталог) — указатель HEAD будет указывать на этот
коммит, индекс и рабочий каталог будут соответствовать этому коммиту;
- Нажмите Сброс.
Вернуть к предыдущему состоянию (revert)
Например, вы зафиксировали изменения и через какое-то время поняли, что они вам не подходят.
Вы решили пока не включать эту функциональность в ваш продукт.
Можно создать другой коммит, который откатит все изменения, сделанные этим коммитом.
-
- Вернуть к предыдущему состоянию после последнего коммита
-
- Откройте панели История;
- Нажмите Отменить коммит в контекстном меню коммита;
- Нажмите Отменить коммит.
- Вернуть к предыдущему состоянию после коммита слияния
-
Предположим, последним коммитом был коммит слияния. Отмена коммита слияния особенна тем, что у такого коммита есть два родителя, поэтому требуется дополнительно указать, какой родительский коммит принадлежит основной ветке слияния. Той ветке, в которую вливалась другая ветка.
Например, в ветку master вы влили новую функциональность из ветки task. Затем вы решили что пока не нужно включать эту функциональность в master.
У коммита слияния два родителя: 5db23a2 (master) и 53d6cd2 (task). При отмене вам нужно указать на втором шаге коммит 5db23a2 (master).
Результат отмены будет выглядеть следующим образом:
Важно: Имейте в виду, что возвращение к предыдущему состоянию после коммита слияния фактически означает то, что изменения, которые были во вливаемой ветке task, больше не попадут в основную ветку master. Если впоследствии вы внесете изменения в task и захотите снова влить эту ветку в master, то вольются только те изменения, которые были выполнены в task после «отмены» коммита слияния.
- Вернуть к предыдущему состоянию после одного из предыдущих коммитов
-
Если операцию возвращения к предыдущему состоянию вы применяете к коммиту, который не является последним, то в этом случае возможны конфликты, которые нужно разрешить вручную.
Например, вы добавили справочник Запасы, который потом переименовали в Припасы, а в итоге он получил имя Ресурсы. Теперь вы хотите вернуть предыдущее состояние перед коммитом c37ec84 Запасы —> Припасы. В результате вы получите конфликт.
С одной стороны, из-за отмены коммита, вроде бы должно вернуться прежнее название, Запасы. Но с другой стороны оно уже было впоследствии изменено на Ресурсы. Какое из двух имен выбрать, вам необходимо решить вручную.