В предыдущей статье мы изучили способы подключения к Git. Теперь рассмотрим основные команды, которые можно выполнить в консоли для работы с репозиториями.
Список всех доступных возможностей очень большой, но мы не будем пытаться рассмотреть в этой статье их все. Вместо этого постараемся рассказать о наиболее часто используемых и критически необходимых для совместной работы.
Понимание списка доступных возможностей поможет научиться работать с системой контроля версий, а отдельные команды вы можете в дальнейшем изучить самостоятельно.
Виды команд
Все команды можно условно разделить на несколько основных групп:
- Получение данных на устройство из удаленного репозитория.
- Подготовка изменений к отправке.
- Отправка данных с устройства в удаленный репозиторий.
- Взаимодействие с ветками и коммитами.
- Слияние разных веток.
Дополнительно желательно иметь хотя бы минимальное представление о том, как работать с командной строкой. На случай, если вы не умеете с ней работать, мы также рассмотрим основные команды для взаимодействия с файловой системой.
Команды для файловой системы
cd - переход в указанную папку. После "cd" необходимо указать название папки. Для возврата на уровень выше необходимо на месте названия папки указать двойную точку (..).
1 | | cd foldername |
ls - просмотр содержимого текущей папки. Команда выводит список всех имеющихся файлов и папок относительно того места, откуда была вызвана команда.
1 | | ls |
mkdir - создает папку (каталог) в текущей директории.
1 | | mkdir foldername |
rmdir - удаляет папку (каталог) из текущей директории.
1 | | rmdir foldername |
Получение данных из удаленного репозитория
git clone - копирование проекта из удаленного репозитория в текущую папку на локальном компьютере. После "git clone" необходимо указать репозиторий для копирования. В зависимости от типа копирования путь к репозиторию будет представлен в виде URL адреса или защищенного пути SSH.
1 | | git clone git@github.com:Username/project_name.git |
или
2 | | git clone https://github.com/Username/project_name.git |
git fetch - скачивание изменений из удаленного репозитория.
1 | | git fetch |
git pull - скачивание данных из репозитория с принудительной перезаписью имеющихся в папке файлов на те файлы, которые хранятся в репозитории.
1 | | git pull origin branch_name |
Фиксация изменений
После внесения изменений необходимо сначала добавить файлы в список на отправку (коммит), затем указать описание к коммиту, а только потом изменения можно будет отправить в удаленный репозиторий.
git status - команда проверяет состояние файлов и выводит список всех изменений по сравнению с версией в репозитории.
1 | | git status |
git add - добавить файл в список на отправку.
1 | | git add filename.ext |
или
1 | | git add folder/filename.ext |
git add -A - добавить все измененные файлы из текущей директории в список на отправку.
1 | | git add -A |
git add . - (в конце точка) добавить все имеющиеся файлы в список на отправку. Следует быть осторожным с этой командой, так как можно случайно отправить не то, что нужно.
1 | | git add . |
git reset - удалить указанный файл из списка на отправку.
1 | | git reset filename.ext |
или
1 | | git reset folder/filename.ext |
Отправка изменений
git commit -m - создание коммита. В конце в кавычках обязательно необходимо указать комментарий к коммиту, чтобы остальные участники проекта могли увидеть, какие изменения были добавлены. В отправку пойдут только те файлы, которые были добавлены в список на отправку командой git add.
1 | | git commit -m "Добавлена такая-то фича" |
git commit --amend -m - если вы допустили ошибку в комментарии к коммиту, то с помощью этой команды можно изменить комментарий.
1 | | git commit --amend -m "Добавлена такая-то конкретная фича" |
git push origin - отправляет изменения в удаленный репозиторий. После "origin" необходимо добавить название ветки, в которую следует отправить изменения.
1 | | git push origin branch_name |
git remote add origin - связать папку с удаленным репозиторием. Если в начале работы вы не скачивали файлы из репозитория, а получили к ним доступ другим способом или даже создавали проект с нуля, то Git не будет понимать, куда именно вы собираетсь отправить данные. В таком случае вам необходимо сначала связать папку проекта с конкретным удаленным репозиторием, а только потом выполнять отправку.
1 | | git remote add origin git@github.com:Username/project_name.git |
Взаимодействие с ветками
При командной работе над проектом практически всегда приходится работать с разными версиями проекта и иметь возможность возвращаться к предыдущим итерациям кода. Для этого вы можете воспользоваться командами, представленными ниже.
git branch - просмотреть список доступных веток.
1 | | git branch |
git checkout - переключиться на указанную ветку. В конце необходимо добавить название ветки.
Внимание! Переключение на другую ветку доступно только после того, как все измененные файлы были отправлены в коммит. В противном случае переключиться на другую ветку не получится.
1 | | git checkout branch_name |
git checkout -b - создать новую ветку. В конце указываем название ветки. При создании новой ветки она автоматически наполняется копией данных из главной ветки проекта.
1 | | git checkout -b my_new_branch |
git branch -d - удалить ветку. В конце указываем название ветки.
1 | | git branch -d my_new_branch |
Взаимодействие с коммитами
git log - команда позволяет посмотреть историю всех коммитов. В истории указаны ID коммитов, авторы, даты и содержания коммитов.
1 | | git log |
git show - команда позволяет посмотреть конкретный коммит по его ID. Вы увидите список изменений зеленым (добавленные) и красным (удаленные) цветом. Для выхода из режима просмотра необходимо нажать одну из комбинаций горячих клавиш (например, Q+Enter).
1 | | git show 7ba80f05a4d47c776e525c0a14f4b3a4414d54e2 |
git diff - команда позволяет сравнить разницу между двумя коммитами. При наборе команды ID коммитов следует разделять двойной точкой (..)
1 | | git diff 7ba80f05a4d47c776e525c0a14f4b3a4414d54e2..5714fcb39dd47f05a71696d8833fff127255784c |
git checkout - по аналогии с переключением на другую ветку, вы можете переключиться на один из прошлых коммитов в текущей ветке. Например, для того, чтобы вернуться на предыдущую итерацию кода и вести работу от нее. Для этого используйте эту команду с указанием ID нужного коммита.
1 | | git checkout 7ba80f05a4d47c776e525c0a14f4b3a4414d54e2 |
Команды слияния
После успешной работы над выпуском обновления проекта вам потребуется перенести свои изменения из ветки для разработки в ветку для публикации. Для этого используются команды слияния.
git merge - производит слияние между текущей веткой и указанной веткой. Например, вы находитесь в ветке "my_branch" и хотите перенести изменения в ветку "main". Для этого перейдите в ветку "main" (git chechkout main), а затем выполните команду слияния "git merge my_branch".
1 | | git merge my_branch |
Принудительное слияние
При работе в команде могут возникать ситуации, когда между несколькими ветками проекта или несколькими коммитами внутри одной ветки обнаруживаются конфликты. Например, это может произойти, если после скачивания последней версии проекта и перед отправкой нового коммита кто-то другой уже выложил свой коммит, в котором некоторые файлы отличаются от тех, которые вы изначально скачали. В результате ваша исходная версия проекта уже считается устаревшей, а вы собираетесь на них еще и выгрузить свои обновления.
Git распознает такие конфликтные ситуации и блокирует отправку данных до разрешения конфликта. Конфликт может быть решен как вручную, так и принудительно. Эта тема достаточно широкая и достойна отдельной статьи, поэтому мы не будем рассматривать ее полносью. Здесь же хотелось бы рассмотреть возможные команды для принудительного слияния.
git push --force - принудительно отправляет коммит в удаленный репозиторий с перезаписью файлов в репозитории на те файлы, которые указаны в вашей версии проекта..
1 | | git push --force origin master |
Поможем вам в решении проблемы
Если вы планируете внедрять работу с удаленными репозиториями, но не хотите утруждать себя технической работой, оставьте заявку или напишите нам в мессенджеры. Поможем внедрить технологию работы с удаленными репозиториями и обучим работе с Git. Наша команда оказывает профессиональные услуги по веб-разработке, поэтому мы готовы помочь с решением любой вашей проблемы.