Рабочий процесс — Введение в Git
Для начала пройдем поверхностно весь путь от создания проекта в Git до начала отслеживания изменений. Этой теме мы посвятим этот урок, а уже в следующих — поговорим подробнее про все этапы. В процессе мы изучим большое количество новых терминов и команд, которые нужны для понимания работы Git.
Основные команды
Git может отслеживать файлы проекта только в том случае, когда они помещены под контроль версий. Для этого нужно зайти в директорию проекта и выполнить команду инициализации git init .
Проект может быть как новый, так и уже существующий. Процесс инициализации от этого не поменяется:
# Создаем новый проект mkdir hexlet-git # Переходим в созданную директорию cd hexlet-git # Выполняем инициализацию git init Initialized empty Git repository in /private/tmp/hexlet-git/.git/
Команда git init создает репозиторий — директорию .git, которая содержит все необходимые для работы Git-файлы.
С помощью команды git status можно посмотреть статус репозитория:
(create/copy files and use "git add" to track)
В этом выводе указано, что репозиторий пустой ( No commits yet ) — в нем нет новых или измененных файлов.
Давайте попробуем добавить несколько файлов:
# Создаем файл README.md со строкой текста echo 'Hello, Hexlet!' > README.md echo 'Haskell Curry' > PEOPLE.md
Теперь снова смотрим на статус:
# Часть вывода убрана Untracked files: (use "git add . " to include in what will be committed) PEOPLE.md README.md
Git увидел, что в проекте появились новые файлы, о которых ему ничего не известно. Они помечаются как неотслеживаемые файлы (untracked files).
Git не следит за изменениями в таких файлах, потому что они не добавлены в репозиторий.
Добавление в репозиторий происходит в два шага. Первым шагом выполняем команду подготовки файлов git add :
# Для каждого нового или измененного файла git add README.md
Смотрим, что произошло:
(use "git rm --cached . " to unstage) new file: README.md Untracked files: (use "git add . " to include in what will be committed) PEOPLE.md
Файл README.md теперь находится в состоянии «подготовлен к коммиту» — другими словами, файл попал в индекс.
Следующий шаг — это коммит. Под этим термином понимается окончательное добавление в репозиторий, когда Git запоминает файл навсегда и следит за всеми последующими изменениями.
Во время коммита мы берем все подготовленные изменения (они могут включать любое количество файлов) и отправляем их в репозиторий как единое целое. Вот, как он выполняется:
-m 'add README.md' [main (root-commit) 3c5d976] add README.md 1 file changed, 1 insertion(+) create mode 100644 README.md
Флаг -m означает message, то есть описание коммита. Коммит можно выполнять и без него, но тогда откроется редактор, в котором нужно будет ввести описание коммита.
Мы рекомендуем делать осмысленные описания — это хороший тон. Пример соглашения по именованию коммитов приведен в дополнительных материалах к уроку.
Перейдем к процессу работы с Git:
Может возникнуть вопрос: зачем так сложно? Зачем отдельно отправлять файлы в индекс командой git add ? Почему нельзя добавлять все измененные файлы сразу в коммит?
Как ни странно, такой процесс создан как раз для удобства программистов. Дело в том, что во время разработки может меняться и добавляться много файлов. Но это не значит, что мы хотим добавить все эти изменения в один коммит.
Со смысловой точки зрения, коммит — это какое-то логически завершенное изменение внутри проекта. Его размер бывает очень разным:
- Маленьким, если мы исправляем одну опечатку в одном файле
- Большим, если мы внедряем новую функциональность
Главное в коммите — его атомарность. Другими словами, он должен выполнять ровно одну задачу.
Теперь файл README.md находится внутри репозитория. Убедиться в этом можно, запустив команду git status :
(use "git add . " to include in what will be committed) PEOPLE.md
Команда git status не выводит файлы, которые добавлены в репозиторий и не содержат изменений. При этом сам файл README.md находится внутри директории hexlet-git.
Самостоятельная работа
- Установите Git по инструкции
- Выполните все шаги из урока
- Добавьте файл PEOPLE.md в репозиторий
После добавления команда git status покажет такой вывод:
Дополнительные материалы
- Git Cheatsheet
- Соглашение об именовании коммитов
- Что такое Git?
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Урок «Как эффективно учиться на Хекслете»
- Вебинар «Как самостоятельно учиться»
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Что значит ошибка: nothing to commit, working tree clean?
Это не ошибка, а лишь констатация факта, что в рабочем каталоге не появилось ничего нового после предыдущего коммита, либо проект не содержит вообще никаких файлов, если вы делаете коммит в первый раз.
Сомневаюсь собираетесь опубликовать пустой каталог. Скорее всего, вы зачем то пытаетесь заново создать репозиторий, который вы уже инициализировали ранее.
Ответ написан более года назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
ElenaKharitonova @ElenaKharitonova
Вы забыли произвести сохранение после внесенных изменений ctrl/s, дальнейшие команды вводите только после этого.
Git для начинающих. Часть 5. Создание репозитория и первый коммит
В этом уроке мы рассмотрим, как создать пустой git репозиторий, добавить в него файлы и сделать первый коммит. Также коснемся вопроса просмотра коммитов и состояния рабочего каталога.
- Создание репозитория git
- Создание первого коммита
Создание репозитория
Для того чтобы создать репозиторий, для начала, создайте папку, в которой он будет располагаться. В нашем случае это будет каталог с названием repo .
> mkdir repo
Теперь перейдем в этот каталог.
>cd repo
Создадим в нем пустой git репозиторий.
> git init
Создание первого коммита
Если мы посмотрим на список коммитов, которые были отправлены в репозиторий, то увидим, что он пустой – это правильно, т.к. мы пока только создали репозиторий и ничего ещё туда не отправляли.
> git log fatal: your current branch 'master' does not have any commits yet
Для просмотра состояния рабочего каталога воспользуемся командой git status .
> git status On branch master Initial commit nothing to commit (create/copy files and use "git add" to track)
Создадим в нашем каталоге пустой файл.
> touch README.md
Теперь, если мы выполним команду git status , то увидим, что в нашем каталоге появился один неотслеживаемый файл: README.md .
> git status On branch master Initial commit Untracked files: (use "git add . " to include in what will be committed) README.md nothing added to commit but untracked files present (use "git add" to track)
Добавим, созданный файл в stage . Stage (или cache ) – это хранилище для файлов с изменениями, информация о которых попадет в единый коммит. Stage является элементом архитектуры трех деревьев, на базе которой построен git , более подробно смотрите здесь. Для добавления файла README.md в stage необходимо воспользоваться командой git add .
> git add README.md
Если изменение было произведено в нескольких файлах, и мы хотим их все отправить в stage , то вместо имени файла поставьте точку.
Выполним git status для того, чтобы посмотреть на то, что сейчас происходит в нашем каталоге.
> git status On branch master Initial commit Changes to be committed: (use "git rm --cached . " to unstage) new file: README.md
Как видно, в stage был добавлен один файл с именем README.md и теперь представленный набор изменений готов к отправке в репозиторий – т.е. к коммиту. Сделаем это.
> git commit -m "[create repository]" [master (root-commit) 500067c] [create repository] 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md
Проверим статус каталога.
> git status On branch master nothing to commit, working tree clean
Как видно с момента последнего коммита никаких изменений в рабочем каталоге не производилось.
Теперь взглянем на список коммитов.
> git log commit 500067cc0b80643d38e2a24e9e0699031ada6be3 Author: Writer Date: Mon Feb 12 22:51:14 2018 +0500 [create repository]
Из приведенной информации видно, что был отправлен один коммит, который имеет ID : 500067cc0b80643d38e2a24e9e0699031ada6be3, более подробно об идентификаторах будет рассказано в следующих уроках. Автор данного коммита Writer , он (коммит) был создан Mon Feb 12 22:51:14 2018 +0500, с сообщением: [create repository] . Это довольно подробная информация, когда коммитов станет много, такой формат вывода будет не очень удобным, сокращенный вариант выглядит так.
> git log --oneline 500067c [create repository]
Подведем небольшое резюме вышесказанному.
Создание пустого репозитория.
> git init
Добавление файлов в stage .
> git add filename
> git commit -m “message”
Просмотр статуса каталога.
> git status
Просмотр коммитов в репозитории.
> git log
Просмотр коммитов в репозитории с сокращенным выводом информации.
> git log --oneline
Отличный курс по git делают ребята из GeekBrains , найдите в разделе “Курсы” курс “Git. Быстрый старт” , он бесплатный!
Раздел: Git Git для начинающих Метки: Git, Git для начинающих, Уроки по Git
Git для начинающих. Часть 5. Создание репозитория и первый коммит : 4 комментария
- SGate 06.03.2019 Так все хорошо в этом курсе, все четко ясно до тех пор пока не было сказано ввести команду touch README.md потому что сразу получил ошибку “touch” является внутренней или внешней командой и т.д. Система Windows 10
- writer 16.03.2019 Да, эта команда доступна только в Linux (по умолчанию). В Windows необходимо установить специальный пакет (cygwin) или, если это Windows 10, то можно прямо Ubuntu установить как приложение.
Самый простой способ заменить эту команду в Windows 10 будет использование echo:
echo “” > README.md
В Linux эта команда должна выполниться без проблем)))
В чем причина ошибки «nothing to commit, working directory clean»?
И когда уже хочу сделать коммит в IntelliJidea, он находит изменные файлы, но не хочет коммитить.
Отслеживать
33.9k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
задан 20 мар 2015 в 9:02
2,058 7 7 золотых знаков 35 35 серебряных знаков 70 70 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Так написано же серым по темно-серому: «nothing to commit, working directory clean»
Если видит, что ты что-то изменил то добавь это в измененные, а только потом комменть.
:~$ git status :~$ git add . :~$ git commit -m 'It is super puper commit! I\'ve fixed everything in the world!'
Отслеживать
ответ дан 20 мар 2015 в 14:13
Алексей Данчин Алексей Данчин
610 5 5 серебряных знаков 21 21 бронзовый знак
- git
- intellij-idea
- git-commit
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.