JavaRush /Курсы /Go SELF /Ежедневный цикл разработчика: Commit, Push и .gitignore

Ежедневный цикл разработчика: Commit, Push и .gitignore

Go SELF
32 уровень , 1 лекция
Открыта

1. Начало работы: клонирование проекта

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

Шаг 1. Запустите вашу IDE. Если у вас открыт какой-то проект, закройте его через File | Close Project. На стартовом окне (Welcome Screen) выберите Clone Repository (или Get from VCS).

Шаг 2. В открывшемся окне вставьте URL вашего репозитория. Такой способ полезен, если вы клонируете чей-то репозиторий. URL можно скопировать со страницы репозитория на GitHub.

Ввод URL для клонирования

Если вы клонируете свой репозиторий (наш вариант), проще всего войти в свой аккаунт GitHub прямо из IDE. Для этого выберите опцию Log in to GitHub. Ваша IDE откроет браузер для авторизации.

Окно авторизации JetBrains IDE на GitHub

На открывшейся странице смело нажимайте зеленую кнопку Authorize JetBrains. После этого вы сможете выбирать свои репозитории прямо из списка в IDE. Выберите нужный проект и нажмите Clone.

Список репозиториев для клонирования

Шаг 3. Ваша IDE спросит, доверяете ли вы этому проекту. Поскольку это ваш собственный репозиторий, нажмите Trust Project.

Шаг 4. Настройка антивируса (для пользователей Windows)

Антивирус Windows может предупредить, что IDE пытается выполнить неизвестные ему действия. Поскольку мы собираемся создавать и запускать программы, нам нужно разрешить IDE работать без ограничений. Нажмите на кнопку «Automatically», чтобы IDE сама добавила нужные папки в исключения антивируса.

Настройка исключений антивируса

2. Сохранение изменений: Commit

commit — это "снимок", или сохраненное состояние вашего проекта в определенный момент времени. Думайте о нем как о точке сохранения в игре: вы всегда можете вернуться к ней, если что-то пойдет не так. У каждого коммита есть уникальный идентификатор и сообщение, описывающее сделанные изменения.

        gitGraph
        commit id: "Initial commit"
        commit id: "Add user authentication"
        commit id: "Fix login button bug"
        commit id: "Refactor database connection"
    
История коммитов. Каждый новый коммит строится на основе предыдущего, создавая хронологию развития проекта.

Шаг 1. Внесите изменения.

Если вы клонировали свежесозданный репозиторий, он будет содержать только один файл — README.md (и скрытые папки IDE).

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

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

Шаг 2. Откройте окно Commit.

Слева в IDE находится вкладка Commit. Открыв ее, вы увидите все изменения, готовые к сохранению. Это ваша Область индексации (Staging Area).

Окно Commit в IntelliJ IDEA

Давайте разберем, что мы видим:

  • Changes: здесь находятся файлы, которые уже отслеживаются в Git, но были изменены. В нашем случае это README.md, в который мы добавили план проекта.
  • Unversioned Files: это новые файлы, которые Git видит в папке проекта, но еще не отслеживает.

Важно

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

Если вы видите в списке Unversioned Files папку .idea/ (и особенно файл workspace.xml, который меняется при каждом клике мышки) или папки с названием bin/, vendor/, а также скомпилированные бинарные файлы (например, myapp.exe) — остановитесь! Эти служебные файлы не должны попасть в общую историю. Хорошая новость: если вы создали репозиторий с шаблоном .gitignore (Go), Git сам скроет эти папки. Если же они видны, их нужно срочно добавить в игнор (об этом в конце лекции).

А пока наша задача для первого коммита — поставить галочки у основных файлов проекта, написать понятное сообщение в поле Commit Message.

Шаг 3. Сделайте коммит.

Нажмите на синюю кнопку Commit. Готово! Вы сохранили "снимок" вашего проекта в локальном репозитории. Имя файла снова станет обычного цвета.

Успешный коммит

3. Отправка изменений на GitHub: Push

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

        sequenceDiagram
        participant Локальный репозиторий (Ваш компьютер)
        participant Удаленный репозиторий (GitHub)

        note over Локальный репозиторий (Ваш компьютер): Вы сделали один или несколько коммитов.
Они существуют только здесь. Локальный репозиторий (Ваш компьютер) ->> Удаленный репозиторий (GitHub): git push (отправить коммиты) note over Удаленный репозиторий (GitHub): Ваши коммиты скопированы
и надежно сохранены на сервере.
Ваши локальные коммиты отправляются на удаленный сервер, синхронизируя историю проекта.

Шаг 1. Нажмите на кнопку Push.

В интерфейсе кнопка Push находится на главной верхней панели инструментов (Main Toolbar). Она выглядит как стрелочка, направленная вверх и вправо. Нажмите на нее.

Кнопка Push на Main Toolbar

Шаг 2. Проверьте и подтвердите.

Откроется окно, где вы увидите все коммиты, которые готовы к отправке. Это ваш последний шанс убедиться, что вы отправляете именно то, что нужно. Нажмите Push.

Окно подтверждения Push

Если все прошло успешно, вы увидите всплывающее уведомление IDE: Pushed commits to origin/main. Create pull request.

Шаг 3. Проверьте результат на GitHub.

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

4. Панель управления Git

В вашей IDE есть отдельная панель инструментов Git, а также быстрые действия на верхнем Main Toolbar. Это ваш центр управления версиями. Давайте познакомимся с ключевыми кнопками.

Элементы управления Git в IDE
  • Commit (галочка): открывает панель для сохранения изменений.
  • Push (стрелочка вверх/вправо): открывает окно для отправки ваших коммитов на GitHub.
  • Branches: открывает виджет для управления ветками (в левом верхнем углу).
  • Show Git Log: показывает всю историю коммитов вашего проекта на вкладке Git. Ваша личная машина времени.

Утро начинается с Update Project

Кнопка Update Project выполняет важнейшую функцию — скачивает свежие изменения от других участников команды с сервера GitHub на ваш компьютер (выполняет git pull).

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

5. Использование .gitignore-файлов

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

Специфика Go и что мы игнорируем

В экосистеме Go компиляция и тестирование выполняются встроенными инструментами (go build, go test). Процесс сборки и запуска тестов создает бинарные файлы и кэши, которые категорически запрещено отправлять в Git:

  • bin/ или out/ — папки, куда вы можете складывать готовые скомпилированные программы. Они уникальны для вашей операционной системы и архитектуры процессора.
  • *.exe, файлы без расширений (в Linux/macOS) — сами бинарные исполняемые файлы. Хранить их в Git — дурной тон: они занимают место и бесполезны для других разработчиков (так как скомпилированы под вашу конкретную ОС).
  • *.test, *.out — бинарники, созданные во время тестов, и файлы профилирования/покрытия кода (например, coverage.out).
  • go.work и go.work.sum — файлы локального рабочего пространства. В отличие от go.mod и go.sum, которые обязаны быть в репозитории, файлы go.work предназначены только для вашего личного локального удобства.
  • vendor/ — директория с локальными копиями зависимостей. В современных проектах на Go модулях (Go Modules) ее часто добавляют в игнор, доверяя скачивание пакетов утилите go mod.
  • .idea/ — локальные настройки окна IDE (какие файлы у вас открыты, размер шрифта). Вашим коллегам ваши личные настройки интерфейса не нужны, а файл workspace.xml вообще меняется каждую секунду.

Как добавить файл в игнор вручную:

Шаг 1. Допустим, вы создали временный файл notes.txt с паролями к тестовой базе. Щелкните по нему правой кнопкой мыши в окне проекта.

Создание временного файла

Шаг 2. Перейдите в меню Git -> Add to .gitignore -> Add to .gitignore. Эта опция добавляет выбранный файл в файл .gitignore в корне вашего проекта.

Добавление в .gitignore через меню

Если у вас еще нет файла .gitignore, IDE предложит его создать. Соглашайтесь.

Шаг 3. Ваша IDE автоматически добавит имя файла в .gitignore.

Файл добавлен в .gitignore

После этого проигнорированные файлы будут отображаться в дереве проекта серым или оливковым цветом. При попытке сделать коммит Git просто "не увидит" эти файлы. Главное — не забудьте закоммитить сам файл .gitignore, чтобы эти правила игнорирования скачали все участники вашей команды.

А что если я уже закоммитил?

.gitignore игнорирует только новые, еще не отслеживаемые файлы. Если вы по ошибке уже закоммитили папку bin/, она находится в истории, и Git продолжит следить за ней, даже если вы добавите ее в .gitignore. Для таких ситуаций потребуется очистить кэш (например, командой git rm -r --cached bin/ в терминале), но лучше просто не допускать попадания мусора в первом коммите.

Правила для .gitignore

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

  • * — заменяет любое количество любых символов. Например, *.log игнорирует все файлы с расширением .log.
  • / — в конце шаблона означает директорию. Например, build/ игнорирует все содержимое папки build.
  • ! — в начале строки инвертирует правило. Например, если у вас есть правило *.log, но вы хотите отслеживать important.log, добавьте строку !important.log.
  • ** — соответствует любому количеству вложенных папок.

Пример файла .gitignore для Go


# Скомпилированные бинарные файлы
*.exe
*.exe~
*.dll
*.so
*.dylib
bin/

# Файлы тестирования и профилирования
*.test
*.out

# Файлы локального рабочего пространства Go
go.work
go.work.sum

# Директория с локальными копиями зависимостей (опционально)
vendor/

# Файлы и настройки локальной IDE
.idea/

# Файлы операционной системы
.DS_Store
Thumbs.db

Готовые шаблоны

Вам не нужно писать эти файлы с нуля. Существуют готовые, проверенные сообществом шаблоны:

  1. Коллекция .gitignore от GitHub для разных языков и фреймворков: https://github.com/github/gitignore.
  2. gitignore.io — удобный веб-сервис, который генерирует файл .gitignore под ваши технологии (просто введите Go, GoLand, Intellij).
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ