Основные команды для работы с Git

Основные команды для работы с Git

В предыдущей статье мы изучили способы подключения к Git. Теперь рассмотрим основные команды, которые можно выполнить в консоли для работы с репозиториями.

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

Понимание списка доступных возможностей поможет научиться работать с системой контроля версий, а отдельные команды вы можете в дальнейшем изучить самостоятельно.

Виды команд

Все команды можно условно разделить на несколько основных групп:

  1. Получение данных на устройство из удаленного репозитория.
  2. Подготовка изменений к отправке.
  3. Отправка данных с устройства в удаленный репозиторий.
  4. Взаимодействие с ветками и коммитами.
  5. Слияние разных веток.

Дополнительно желательно иметь хотя бы минимальное представление о том, как работать с командной строкой. На случай, если вы не умеете с ней работать, мы также рассмотрим основные команды для взаимодействия с файловой системой.

Команды для файловой системы

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. Наша команда оказывает профессиональные услуги по веб-разработке, поэтому мы готовы помочь с решением любой вашей проблемы.

ИП Титов Дмитрий Сергеевич
ИНН 771682960599
ОГРНИП 318774600285830
info@firemarketing.ru

+7 (993) 254-31-62