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

Пока вы случайно не испортите свой проект.

«Не волнуйтесь, у меня есть резервные копии в Dropbox!» Вы могли бы сказать? Да, но доводилось ли вам когда-нибудь работать на практике? Если вы похожи на меня, вы со временем сведете себя с ума, восстанавливая тот или иной файл или, возможно, целую папку за раз. Хуже того, с каждым шагом ваши проблемы усугубляются, потому что комбинации возможных изменений выходят из-под контроля.

Вы можете полностью предотвратить это. Бесплатные инструменты Git Visual Studio Code позволяют легко и эффективно перематывать назад или двигаться вперед. Версионное безумие останется в прошлом. И не нужна командная строка.

Двухминутная демонстрация

Начните с любого проекта, который у вас уже есть. Я показываю простой проект под названием «Nifty project», содержащий папку «src» всего с двумя файлами: «index.html» и «styles.css». В вашем реальном проекте будет намного больше файлов.

Щелкните значок «разветвление», показанный выше, что означает «Контроль версий», и получите следующее:

Он вас умоляет нажать на значок +, не так ли?

Теперь он предлагает инициализировать вашу текущую папку как репозиторий Git. Все это по-прежнему локально на вашем собственном компьютере.

Нажмите Ввод. Произойдет несколько вещей.

Во-первых, на значке Source Control теперь будет номер. Это количество файлов, которые различаются между текущим состоянием вашего проекта и последней фиксацией. Поскольку вы еще ничего не зафиксировали, отображается общее количество файлов в вашем проекте. Они перечислены под заголовком ИЗМЕНЕНИЯ.

Сделайте первоначальную фиксацию. Введите «Начальная фиксация» в поле «Сообщение» и щелкните значок ✓.

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

Внесение изменений

Представьте, что вам нужно изменить свой код. Внесите безвредное изменение и сохраните его.

Измененная строка будет отмечена на полях. Значок управления исходным кодом получит «1», и когда вы щелкните по нему, измененный файл появится в списке ИЗМЕНЕНИЙ.

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

В сообщении о фиксации опишите цель вашего изменения, а не механически перечисляйте фактические изменения. В качестве сообщения о фиксации вы можете указать Исправить название приложения, чтобы оно соответствовало газетной рекламе. Руководство по написанию сообщений коммитов приведено здесь: https://chris.beams.io/posts/git-commit/

После ввода сообщения о фиксации щелкните ✓, чтобы выполнить фиксацию. Git проверит хэши всех ваших файлов, распознает, что изменился только index.html, и сохранит эту новую версию как отдельный объект в своем репозитории.

Найдите свою ошибку

В любой момент в будущем вы можете вернуть свой проект в исходное состояние или в любое состояние «Зафиксировано».

Сделайте еще несколько изменений и сделайте еще одну фиксацию. В моем случае мой файл index.html теперь стал таким:

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

На помощь приходит GitLens! Установите его в Visual Studio Code.

Щелкните значок GitLens и откройте репозиторий своего проекта. GitLens перечисляет все коммиты, которые вы сделали в проекте.

Внутри каждого коммита вы можете увидеть:

  • каждый файл, который вы изменили
  • каждое изменение в каждом файле

В моем примере выше вы можете видеть, что я сделал фиксацию под названием «Добавить фото нашего здания», и это изменило (только) index.html и (только) в двух местах, показанных рядом сравнение кода.

Я могу вернуться, чтобы увидеть изменения в index.html, вызванные предыдущей фиксацией, щелкнув по нему.

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

В более сложном проекте вы можете сосредоточиться на одном файле, но проследить за всеми его изменениями с течением времени. Используйте раздел ИСТОРИЯ ФАЙЛОВ.

Поворачивая время вспять

Если вы испортили свой проект и хотите вернуться к предыдущей фиксации, просто щелкните правой кнопкой мыши выбранную фиксацию и выберите «Восстановить».

Не устранили проблему? Перейти на любой раньше или позже, зафиксировать. Любое количество раз.

Вы можете сделать это для всего проекта в разделе REPOSTORIES или отдельных файлов в разделе FILE HISTORY или даже для отдельных строк в разделе LINE HISTORY.

Делайте каждую фиксацию простой

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

Мое эмпирическое правило заключается в том, что я совершаю обязательство каждый раз, когда считаю, что мой проект снова «работает».

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

Сделайте что-то одно, например переименуйте переменную «fulname» в «fullName» во всем проекте. Кажется, что проект все еще работает? ОК, зафиксируйте это с сообщением «Исправить орфографию fullName».

Затем внесите еще одно изменение, проверьте, что проект все еще работает, а затем снова выполните фиксацию, например «Приведите классы CSS в стандартную номенклатуру».

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

Постановка: когда вы понимаете, что слишком сильно изменились

Я часто оставляю слишком много времени между одним длинным загородным забегом и следующим. Как только я понимаю, что уже поздно что-то с этим делать. Но если вы вносите слишком много изменений в свой проект и понимаете только, когда собираетесь совершить фиксацию, есть решение: постановка.

Выше я понял, что добавил функцию форматирования в styles.css, но забыл зафиксировать перед добавлением функции содержимого в index.html. В реальной жизни я мог бы изменить полдюжины файлов для одного дополнения и еще полдюжины файлов для другого.

Но я могу спасти ситуацию. Я просто нажимаю значок «+» (Stage Changes) рядом с файлами, изменения которых я хочу зафиксировать в первую очередь.

Выбранные мной файлы перемещаются вверх в раздел ПОСТУПЕНЧАТЫЕ ИЗМЕНЕНИЯ. Когда я совершаю коммит сейчас, например, с сообщением коммита «Добавить пение и танцы», коммит будет состоять только из их изменений.

Затем я фиксирую оставшиеся файлы с отдельным сообщением фиксации, например «Добавить цвета к заголовкам».

Git дает вам гораздо больше, чем это

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

Временные версии

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

Хранение вашего проекта в Интернете

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

Сотрудничество

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

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

В какой удивительный век мы живем, с такими программами, как VS Code, Git и GitLens, доступными всем нам без каких-либо затрат!