On branch master nothing to commit working tree clean что это
Перейти к содержимому

On branch master nothing to commit working tree clean что это

  • автор:

Рабочий процесс — Введение в 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.

Самостоятельная работа
  1. Установите Git по инструкции
  2. Выполните все шаги из урока
  3. Добавьте файл PEOPLE.md в репозиторий

После добавления команда git status покажет такой вывод:

Дополнительные материалы
  1. Git Cheatsheet
  2. Соглашение об именовании коммитов
  3. Что такое Git?

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

  • Статья «Как учиться и справляться с негативными мыслями»
  • Статья «Ловушки обучения»
  • Статья «Сложные простые задачи по программированию»
  • Урок «Как эффективно учиться на Хекслете»
  • Вебинар «Как самостоятельно учиться»

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Что значит ошибка: nothing to commit, working tree clean?

2ord

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

Ответ написан более года назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
ElenaKharitonova @ElenaKharitonova

Вы забыли произвести сохранение после внесенных изменений ctrl/s, дальнейшие команды вводите только после этого.

Git для начинающих. Часть 5. Создание репозитория и первый коммит

Follow us on Google Plus Follow us on rss

В этом уроке мы рассмотрим, как создать пустой 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 комментария

  1. SGate 06.03.2019 Так все хорошо в этом курсе, все четко ясно до тех пор пока не было сказано ввести команду touch README.md потому что сразу получил ошибку “touch” является внутренней или внешней командой и т.д. Система Windows 10
  1. writer 16.03.2019 Да, эта команда доступна только в Linux (по умолчанию). В Windows необходимо установить специальный пакет (cygwin) или, если это Windows 10, то можно прямо Ubuntu установить как приложение.
    Самый простой способ заменить эту команду в Windows 10 будет использование echo:
    echo “” > README.md
    В Linux эта команда должна выполниться без проблем)))

В чем причина ошибки «nothing to commit, working directory clean»?

И когда уже хочу сделать коммит в IntelliJidea, он находит изменные файлы, но не хочет коммитить.

alt text

Отслеживать
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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *