Навигация
pwd(от англ. print working directory, «показать рабочую папку») — покажи, в какой я папке;ls(от англ. list directory contents, «отобразить содержимое директории») — покажи файлы и папки в текущей папке;ls -a— покажи также скрытые файлы и папки, названия которых начинаются с символа.;cd first-project(от англ. change directory, «сменить директорию») — перейди в папкуfirst-project;cd first-project/html— перейди в папкуhtml, которая находится в папкеfirst-project;cd ..— перейди на уровень выше, в родительскую папку;cd ~— перейди в домашнюю директорию (/Users/Username);cd /— перейди в корневую директорию.
Создание
touch index.html(англ. touch, «коснуться») — создай файлindex.htmlв текущей папке;touch index.html style(s-).css script.js— если нужно создать сразу несколько файлов, можно напечатать их имена в одну строку через пробел;mkdir second-project(от англ. make directory, «создать директорию») — создай папку с именемsecond-projectв текущей папке.
Копирование и перемещение
cp file.txt ~/my-dir(от англ. copy, «копировать») — скопируй файл в другое место;mv file.txt ~/my-dir(от англ. move, «переместить») — перемести файл или папку в другое место.
Чтение
cat file.txt(от англ. concatenate and print, «объединить и распечатать») — распечатай содержимое текстового файлаfile.txt.
Удаление
rm about.html(от англ. remove, «удалить») — удали файлabout.html;rmdir images(от англ. remove directory, «удалить директорию») — удали папкуimages;rm -r second-project(от англ. remove, «удалить» + recursive, «рекурсивный») — удали папкуsecond-projectи всё, что она содержит.
- Команды необязательно печатать и выполнять по очереди. Можно указать их списком — разделить двумя амперсандами (
&&). - У консоли есть собственная память — буфер с несколькими последними командами. По ним можно перемещаться с помощью клавиш со стрелками вверх (
↑) и вниз (↓). - Чтобы не вводить название файла или папки полностью, можно набрать первые символы имени и дважды нажать
Tab. Если файл или папка есть в текущей директории, командная строка допишет путь сама.
Например, вы находитесь в папкеdev. Начните вводитьcd firstи дважды нажмитеTab. Если папкаfirst-projectесть внутриdev, командная строка автоматически подставит её имя. Останется только нажатьEnter.
git add todo.txt (от англ. add, «добавить») — подготовь файл todo.txt к коммиту;
git add --all (от англ. add, «добавить» + all, «всё») — подготовь к коммиту сразу все файлы, в которых были изменения, и все новые файлы;
git commit -m "Комментарий к коммиту." (от англ. commit, «совершать», «фиксировать» + message, «сообщение») — сделай коммит и оставь комментарий, чтобы было проще понять, какие изменения внесены.
q - выйти из коммита
git log (от англ. log, «журнал [записей]») — выведи подробную историю коммитов.
Хеширование (от англ. hash, «рубить», «крошить», «мешанина») — это способ преобразовать набор данных и получить их «отпечаток» (англ. fingerprint).
git log
Все хеши и таблицу хеш → информация о коммите Git сохраняет в служебные файлы. Они находятся в скрытой папке .git в репозитории проекта.
После вызова git log появляется список коммитов с их описанием.
Вот из каких элементов состоит описание: Строка из цифр и латинских букв после слова commit — это уже знакомый вам хеш коммита. Author — имя автора и его электронная почта. Date — дата и время создания коммита. Сообщение к коммиту.
При вызове команды git log вы также могли заметить надпись (HEAD -> master) после хеша одного из коммитов.
Файл HEAD (англ. «голова», «головной») — один из служебных файлов папки .git. Он указывает на коммит, который сделан последним (то есть на самый новый).
Статусы untracked/tracked, staged и modified
-
untracked (англ. «неотслеживаемый») Новые файлы в Git-репозитории помечаются как untracked, то есть неотслеживаемые. Git «видит», что такой файл существует, но не следит за изменениями в нём. У untracked-файла нет предыдущих версий, зафиксированных в коммитах или через команду git add.
-
staged (англ. «подготовленный») После выполнения команды git add файл попадает в staging area (от англ. stage — «сцена», «этап [процесса]» и area — «область»), то есть в список файлов, которые войдут в коммит. В этот момент файл находится в состоянии staged.
-
tracked (англ. «отслеживаемый») Состояние tracked — это противоположность untracked. Оно довольно широкое по смыслу: в него попадают файлы, которые уже были зафиксированы с помощью git commit, а также файлы, которые были добавлены в staging area командой git add. То есть все файлы, в которых Git так или иначе отслеживает изменения.
-
modified (англ. «изменённый») Состояние modified значит, что Git сравнил содержимое файла с последней сохранённой версией и нашёл отличия. Например, файл был закоммичен и после этого изменён.
В итоге git status показывает только следующие состояния файлов:
- staged (Changes to be committed в выводе git status);
- modified (Changes not staged for commit);
- untracked (Untracked files).
Например, в выводе команды git log --oneline умещается максимум 72 первых символа сообщения, поэтому многие правила включают пункт: «Сообщение не должно быть длиннее 72 символов».
У каждого коммита в Git есть сообщение — то, что передаётся после параметра -m. Например: git commit -m "Добавить урок про оформление сообщений коммитов".
Есть общие рекомендации по тому, как правильно составить сообщение. Оно должно быть: относительно коротким, чтобы его было легко прочитать; информативным.
graph LR
untracked["Неотслеживаемые файлы"] -- "git add" --> staged["Индекс (staged)"]
staged -- "git commit" --> hash["Добавил: Хеш"]
staged -- "git commit" --> log["Добавил: Лог"]
staged -- "git commit" --> head["Добавил: HEAD"]
staged -- "git commit" --> status["Добавил: Статусы"]
staged -- "git commit" --> styles["Добавил: Стили"]
hash --> commit["Коммит"]
log --> commit
head --> commit
status --> commit
styles --> commit
commit -- "git push" --> remote["Удалённый репозиторий"]
class untracked,staged,commit,remote fill:#f9f,stroke:#333,stroke-width:2px
class hash,log,head,status,styles fill:#ccf,stroke:#333,stroke-width:1px
graph LR
untracked["Неотслеживаемые файлы"] -- "git add" --> staged["Индекс (staged)"]
staged -- "git commit" --> committed["Коммит"]
committed -- "git push" --> remote["Удалённый репозиторий"]
class untracked,staged,committed,remote fill:#f9f,stroke:#333,stroke-width:2px