↓Перейти к содержанию
  1. Git: руководства и команды/

Как создать файл в Git репозитории и начать его отслеживать

·7 минут·

Git сам по себе не создаёт файлы — это задача операционной системы. Но после создания файла его нужно явно добавить в отслеживание через git add. Без этого файл будет виден как untracked в git status и не попадёт в коммиты.

Создание файла и добавление в Git #

Стандартный процесс:

# 1. Создать файл (любым способом)
touch README.md

# 2. Написать содержимое (опционально)
echo "# My Project" > README.md

# 3. Проверить статус (файл пока untracked)
git status
# Untracked files:
#   README.md

# 4. Добавить в отслеживание
git add README.md

# 5. Закоммитить
git commit -m "Add README.md"

Способ 1: команда touch #

# Создать пустой файл
touch newfile.txt

# Создать несколько файлов
touch file1.txt file2.txt file3.js

# Добавить и закоммитить
git add file1.txt file2.txt file3.js
git commit -m "Add initial project files"

touch создаёт пустой файл или обновляет дату изменения существующего.

Способ 2: быстрое создание с содержимым #

# Создать файл с текстом (одна строка)
echo "Hello, World!" > hello.txt

# Добавить строку к существующему файлу
echo "Another line" >> config.txt

# Создать многострочный файл
cat > notes.md << 'EOF'
# Notes

- Item 1
- Item 2
EOF

# Добавить в Git
git add hello.txt config.txt notes.md
git commit -m "Add text files"

Разница: > перезаписывает файл, >> добавляет в конец.

Способ 3: создание через редактор #

# Открыть файл для редактирования (vim)
vim newfile.txt

# Или nano
nano newfile.txt

# Или VS Code
code newfile.txt

После сохранения в редакторе — git add newfile.txt.

Создание файлов в новой папке #

Git не отслеживает пустые папки. Чтобы создать структуру папок:

# Создать папку и файл внутри
mkdir -p src/components
touch src/components/Button.js

# Создать несколько уровней вложенности
mkdir -p docs/api/v2
touch docs/api/v2/endpoints.md

# Добавить в Git
git add src/components/Button.js
git add docs/api/v2/endpoints.md
git commit -m "Add project structure"

.gitkeep — для отслеживания пустых папок #

Если нужно зафиксировать структуру папок в репозитории, даже если они пустые:

# Создать папку с файлом-заглушкой .gitkeep
mkdir -p logs
touch logs/.gitkeep

mkdir -p uploads
touch uploads/.gitkeep

# Добавить в Git (папки теперь отслеживаются)
git add logs/.gitkeep uploads/.gitkeep
git commit -m "Add empty directories for logs and uploads"

# В .gitignore исключить содержимое, но сохранить .gitkeep
echo "logs/*" >> .gitignore
echo "!logs/.gitkeep" >> .gitignore

.gitkeep — это условное имя (не стандарт Git). Можно назвать файл как угодно: .keep, .placeholder, README.md.

Создание нескольких файлов с git add #

# Добавить все новые файлы в текущей папке
git add .

# Добавить все изменения (включая удалённые файлы)
git add -A

# Добавить файлы по маске
git add src/**/*.js
git add *.md

# Интерактивное добавление (выбор файлов и частей файлов)
git add -p

Проверка после создания #

# После создания и git add:
git status
# Changes to be committed:
#   new file:   README.md
#   new file:   src/index.js

# Посмотреть что именно будет в коммите
git diff --staged

# Проверить список отслеживаемых файлов
git ls-files

Создание файла конфигурации .gitignore #

Важный файл, который нужно создать в начале проекта:

# Создать .gitignore
touch .gitignore

# Добавить типичные исключения
cat > .gitignore << 'EOF'
# Node.js
node_modules/
npm-debug.log*

# Build outputs
dist/
build/
*.min.js

# Environment
.env
.env.local
*.env

# IDE files
.vscode/
.idea/
*.swp

# OS files
.DS_Store
Thumbs.db
EOF

# Добавить в Git
git add .gitignore
git commit -m "Add .gitignore"

Создание файла через командную строку из одной команды #

Часто требуется создать и сразу добавить файл в одну команду. Это возможно через комбинацию команд:

# Создать файл, добавить и закоммитить в одну строку
touch newfile.txt && git add newfile.txt && git commit -m "Add newfile.txt"

# Или с содержимым
echo "Initial content" > myfile.txt && git add myfile.txt && git commit -m "Add myfile.txt"

# Для нескольких файлов
touch file1.txt file2.txt && git add file1.txt file2.txt && git commit -m "Add multiple files"

Это экономит время при работе с множеством файлов, но следите, чтобы не случайно не добавить файлы, которые не нужны.

Соглашения по именованию файлов в Git #

Правильное именование файлов облегчает работу в команде и уменьшает проблемы с кроссплатформенностью:

# Правильные имена файлов
touch README.md                      # Заглавные буквы для документации
touch LICENSE                        # Стандартные имена без расширения
touch package.json                   # Стандартные конфигурационные файлы
touch .gitignore                     # Скрытые файлы для конфигурации
touch src/components/Button.jsx      # camelCase для кода
touch tests/unit-tests.js            # Отдельные папки для тестов

# НЕПРАВИЛЬНЫЕ имена (избегайте)
touch "file with spaces.txt"         # Пробелы в имени создают проблемы
touch File-with-Dashes-Everywhere    # Излишние дефисы
touch файл.txt                       # Нелатинские символы могут вызвать проблемы
touch .DS_Store                      # macOS файлы (добавьте в .gitignore)

Рекомендации:

  • Используйте строчные буквы для имён файлов кода
  • Используйте дефис - для разделения слов, а не подчёркивание
  • Для папок используйте строчные буквы и дефисы: src/api-handlers, tests/integration-tests
  • Зарезервированные имена (на Windows): COM1-COM9, LPT1-LPT9, CON, NUL, PRN

Создание README.md и его важность #

README.md — это главный файл документации проекта. Его должно быть видно первым при открытии репозитория на GitHub:

# Создать README.md
touch README.md

# Написать базовое содержимое
cat > README.md << 'EOF'
# My Project

## Описание
Краткое описание того, что делает этот проект.

## Установка
```bash
npm install

Использование #

npm start

Лицензия #

MIT

Автор #

Ваше имя EOF

Добавить в Git #

git add README.md git commit -m “Add project README”


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

## Создание файлов через GitHub веб-интерфейс

Если вы хотите добавить файл не скачивая репозиторий:

GitHub → Ваш репозиторий → Add file → Create new file ↓ Введите название файла: src/main.js ↓ Введите содержимое ↓ Commit new file → Введите сообщение коммита ↓ Файл добавлен!


Этот способ удобен для:
- Быстрого добавления файла без локального клонирования
- Редактирования на мобильном устройстве
- Работы в браузере когда нет доступа к терминалу

## Создание файлов через VS Code с интеграцией Git

VS Code имеет встроенную поддержку Git:

```bash
# Откройте папку проекта в VS Code
code .

# В VS Code:
# 1. Ctrl+N (Cmd+N на macOS) для создания нового файла
# 2. Напишите содержимое
# 3. Ctrl+S для сохранения и введите имя файла
# 4. В Source Control панели слева нажмите + рядом с новым файлом
# 5. Введите сообщение и нажмите Commit

# Или через терминал VS Code (Ctrl+`)
touch src/utils.js

VS Code также показывает файлы с разными статусами (зелёный — новый, белый — изменённый, красный — конфликт).

Игнорирование файлов вместо их отслеживания #

Иногда нужно создать файл, но не добавлять его в Git. Для этого есть .gitignore:

# Создать файл, который должен быть локальным только
touch local-config.json

# Добавить в .gitignore
echo "local-config.json" >> .gitignore

# Теперь файл не появится в git status как untracked
git status
# Untracked files:
#   .gitignore

# Добавить .gitignore в Git
git add .gitignore
git commit -m "Add .gitignore"

Типичные файлы для игнорирования:

  • .env — переменные окружения с паролями
  • node_modules/ — установленные пакеты (восстанавливаются через package.json)
  • .vscode/ — личные настройки IDE
  • *.log — файлы логов
  • dist/ — собранные файлы (можно пересобрать)

Проверка статуса файла перед коммитом #

Всегда проверяйте что точно будет закоммичено:

# Создать несколько файлов
touch feature1.js feature2.js temp-file.txt

# Посмотреть что есть
git status
# Untracked files:
#   feature1.js
#   feature2.js
#   temp-file.js

# Добавить только нужные
git add feature1.js feature2.js

# Проверить staging area
git status
# Changes to be committed:
#   new file:   feature1.js
#   new file:   feature2.js
# Untracked files:
#   temp-file.txt

# Посмотреть точное содержимое что будет закоммичено
git diff --staged

# Если ошибка — убрать из staging
git restore --staged feature2.js

# Затем коммитить
git commit -m "Add feature1"

Часто задаваемые вопросы #

Нужно ли делать git add для каждого нового файла? Да, для новых (untracked) файлов git add обязателен. git commit -a не добавляет новые файлы — только изменения в уже отслеживаемых.

Как добавить все файлы сразу? git add . добавляет все файлы в текущей папке и подпапках. git add -A — всё включая удалённые файлы. Но рекомендуется добавлять осознанно, не все подряд.

Почему Git не отслеживает пустые папки? Git отслеживает только содержимое файлов. Папки — это лишь часть путей к файлам. Для отслеживания пустой папки добавьте внутрь файл .gitkeep.

Как создать файл в репозитории GitHub без локального клонирования? Через веб-интерфейс: Add file → Create new file. Подробнее — редактирование через веб-интерфейс.

Можно ли отменить git add до коммита? Да: git restore --staged filename убирает файл из индекса, не удаляя его с диска.

Какие файлы обязательны для любого проекта? Как минимум: README.md (документация), .gitignore (исключения), LICENSE (лицензия), и package.json (для Node.js проектов) или requirements.txt (для Python).

Заключение #

Создание файла и добавление в Git — это два отдельных шага: создать файл (любым способом) → git add filename → git commit. Для пустых папок используйте .gitkeep. Для понимания текущего состояния файлов всегда проверяйте git status.