Тестирование с различными состояниями репозитория
На этом этапе мы внесем некоторые изменения в наш репозиторий, чтобы увидеть, как git status --porcelain
их отображает. Это поможет вам понять различные коды, используемые в выводе команды с флагом --porcelain
.
Сначала убедитесь, что вы находитесь в правильной директории:
cd ~/project/my-time-machine
Теперь создадим новый, неотслеживаемый файл. Назовем его notes.txt
:
echo "Some random notes" > notes.txt
Снова запустим git status --porcelain
:
git status --porcelain
Теперь вы должны увидеть вывод, похожий на следующий:
?? notes.txt
Символы ??
указывают, что notes.txt
является неотслеживаемым файлом. Git видит этот файл, но в настоящее время не управляет его версиями.
Далее изменим файл message.txt
, который мы закоммитили ранее. Добавим в него еще одну строку:
echo "Hello again, Future Me" >> message.txt
Оператор >>
добавляет текст в существующий файл, а не перезаписывает его.
Теперь запустим git status --porcelain
еще раз:
git status --porcelain
Вы должны увидеть вывод, похожий на следующий:
M message.txt
?? notes.txt
Символ M
указывает, что message.txt
был изменен. Пробел перед M
означает, что изменения находятся в рабочей директории, но еще не подготовлены к коммиту. Символы ??
для notes.txt
остаются, так как этот файл по-прежнему неотслеживаемый.
Наконец, подготовим измененный файл message.txt
к коммиту с помощью команды git add
:
git add message.txt
И запустим git status --porcelain
в последний раз:
git status --porcelain
Теперь вывод должен выглядеть так:
M message.txt
?? notes.txt
Символ M
теперь находится в первом столбце, что означает, что message.txt
был подготовлен к коммиту. Пробел во втором столбце означает, что с момента подготовки к коммиту в рабочей директории не было дальнейших изменений. Файл notes.txt
по-прежнему неотслеживаемый.
Понимание этих кодов (??
для неотслеживаемых файлов, M
во втором столбце для измененных, но не подготовленных к коммиту файлов, M
в первом столбце для подготовленных к коммиту изменений) является ключом к быстрому интерпретированию вывода команды git status --porcelain
.