Your AI powered learning assistant

Итак, Вы думаете, что знаете Git - FOSDEM 2024

Introduction

00:00:00

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

About Me (well, Scott Chacon)

00:01:06

Скотт Чакон, соучредитель GitHub и автор Pro Git, представляет себя. Он делится своим опытом продвижения Git и рассказывает о своем текущем проекте, Git-клиенте под названием GitButler.

How Well Do You Know Git?

00:02:36

Существует около 145 команд Git, из них 44 основные для обычных задач, таких как add, commit, push и pull. Кроме того, существуют манипуляторы для метаданных и устаревших команд, которые большинство людей не используют. Доклад посвящен обновлению знаний о существующих функциях и обсуждению новых аспектов, внедренных за последние три года.

Our Agenda

00:05:09

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

Some Helpful Config Stuff

00:06:25

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

Настройка конфигураций с помощью директивы Include If Откройте для себя директиву include if directory в Git config, которая позволяет устанавливать конкретные конфигурации для разных каталогов. Эта функция обеспечивает гибкость, позволяя перезаписывать адреса электронной почты и другие настройки на основе конфигураций, специфичных для каталога.

Oldies But Goodies

00:09:42

Git Blame и Git Log В разделе "старые, но полезные" рассказывается об использовании Git blame для определения истории функции, включая использование диапазонов строк для получения более быстрых и понятных результатов. Также объясняется, как сделать то же самое с Git log, предоставляя представление о том, как функция объединилась.

Дополнительные опции в Git Blame В этой части обсуждаются дополнительные опции в git blame, такие как игнорирование пробелов по умолчанию, обнаружение перемещения кода с помощью '-C' и фильтрация выходных данных на основе регулярных выражений или строк с помощью '-S pickax'. Он также вводит reflog как журнал ссылок, который можно использовать для отслеживания изменений, вносимых с течением времени.

Команда "Ре-ре-ре" Команда "Re re re" объясняется как опция для запоминания разрешений конфликтов слияния, чтобы их можно было автоматически исправлять при повторном возникновении. Эта функция рекомендуется для упрощения разрешения повторяющихся конфликтов слияния во время операций перебазирования или сбора вишни.

Some New Stuff (You May Not Have Noticed)

00:16:22

Новые параметры ветки Git В Git теперь есть новые опции для управления ветвями, включая "столбец тире-тире" для отображения ветвей в алфавитном порядке и "branch.sort" для сортировки ветвей по дате фиксации. Эти опции упрощают визуализацию информации о ветвях и управление ею.

Сила с командованием по аренде "Принудительно использовать с арендой" - более безопасная альтернатива принудительной отправке, предотвращающая случайную перезапись изменений, внесенных другими пользователями. Она проверяет ссылку перед отправкой и требует предварительной выборки, если ссылки не совпадают. Эта команда рекомендуется для перебазирования или внесения изменений.

Фиксации при подписании по SSH Новая функция позволяет подписывать коммиты с использованием SSH вместо GPG, предоставляя альтернативный метод безопасной проверки коммитов на таких платформах, как GitHub или GitLab. Кроме того, пользователи также могут подписывать push-запросы, но эта функция может не поддерживаться широко за пределами kernel.org.

Some Big Repo Stuff / Monorepo Stuff

00:23:48

Поддержка больших репозиториев Усилия Microsoft по поддержке крупных репозиториев и монорепозиториев, особенно после перехода Windows на Git. Проблемы работы с огромными репозиториями, такие как размер Windows (3,5 миллиона файлов) по сравнению с ядром Linux (4,5 миллиона файлов). Инструменты, разработанные Microsoft, включая предварительную выборку и график фиксации.

Эволюция проекта "Скаляр" "Scalar", изначально разработанная как виртуальная файловая система для доступа к файлам по требованию, эволюционировала и была интегрирована в Git core под названием "scalar". Такие функции, как предварительная выборка данных каждый час и постепенное использование графиков фиксации, были включены в Git core.

Мониторинг файловой системы и частичное клонирование Внедрение монитора файловой системы, который отслеживает события inode для ускорения "статуса Git" в больших репозиториях; частичное клонирование позволяет выборочно загружать коммиты / деревья без больших двоичных объектов или деревьев в зависимости от конкретных потребностей

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

Some New Github Stuff

00:33:29

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

GitButler

00:35:54

GitButler позволяет извлекать и извлекать локальные ссылки. Он вводит виртуальные ветви, позволяя одновременно работать с несколькими ветвями без необходимости сохранять или переключать ветви. Каждая ветвь может обрабатываться отдельно для коммитов и запросов на извлечение.

End of talk

00:36:50

Выступающий завершает выступление и выражает благодарность. Они предлагают выпить.

Start of Q&A Session

00:37:03

Спикер открывает слово для сессии вопросов и ответов, позволяя аудитории задавать вопросы и участвовать в дискуссии.

Q: Why does GitHub not do git range diff?

00:37:06

GitHub не поддерживает git range diff, поскольку он фокусируется на конкретном рабочем процессе и инструментах, связанных с ним. Платформа направлена на упрощение взаимодействия с пользователем, избегая ненужных функций для рабочих процессов, которые используются реже.

Q: Why do submodules suck everywhere?

00:38:28

Подмодули широко не нравятся из-за их сложности и ограничений. Многие разработчики, в том числе участвующие в проекте Git, выражают недовольство подмодулями и предпочитают альтернативные решения, такие как mono repo или управление пакетами.

Q: With SSH signing, is it possible to specify more than one key?

00:40:16

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

Q: Why can't --force-with-lease be the default force?

00:40:42

Речь идет о том, почему --force-with-lease не может быть принудительным по умолчанию в Git. Докладчик объясняет, что Git отдает приоритет обратной совместимости, гарантируя, что скрипты, написанные 19 лет назад, по-прежнему работают с текущей версией Git. В них упоминается добавление новых команд для улучшения пользовательского интерфейса и предлагается настроить значения по умолчанию с помощью псевдонимов или параметров командной строки.

Q: If you were back on the Git development team, what direction would you like to see it move in?

00:42:33

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

Q: We all love the Git CLI - but do you ever use any visual tools?

00:44:58

Многие разработчики используют визуальные инструменты наряду с интерфейсом командной строки для Git. Докладчик лично использует GitButler и Visual Studio code с привязками клавиш VIM, что позволяет быстрее находить графические интерфейсы для интерактивного добавления. Однако командная строка по-прежнему предпочтительнее из-за ее скорости в большинстве задач.

That's all folks!

00:46:41

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