Полезные команды git
git init
Инициализирует новый Git-репозиторий в текущей директории. Эта команда создаёт новую папку .git, содержащую все необходимые файлы репозитория — это позволяет начать отслеживание версий для проекта.
git push origin master
Отправляет изменения из локальной ветки master в удалённый репозиторий, названный origin. Это обновляет удалённый репозиторий новыми коммитами, сделанными в локальной ветке master.
git pull origin master
Извлекает изменения из ветки master удалённого репозитория origin и сразу же сливает (merge) их с текущей локальной веткой. Эта команда используется для обновления локальной ветки последними изменениями из удалённого репозитория.
git checkout -b new_branch_name
Создает новую ветку new_branch_name и сразуже на нее переключаемся.
git fetch
Данные из удаленного репозитория будут скопированы в локальный репозиторий без изменения текущего состояния локальной ветки.
Пояснение. Когда вы выполняете команду git fetch
, Git связывается с удалённым репозиторием, связанным с вашим локальным репозиторием. Затем он загружает все данные из этого удалённого репозитория, которых у вас ещё нет. Обычно эти данные включают в себя все изменения, сделанные в ветках. Эта команда скачивает новую историю изменений из удалённого репозитория и интегрирует эти изменения в ваш локальный репозиторий, но она не объединяет их и не изменяет ваши рабочие файлы. Это означает, что текущее состояние вашей локальной ветки не изменится автоматически. Вместо этого git fetch
позволяет вам просмотреть эти изменения перед тем, как интегрировать их в ваши локальные ветки, что можно сделать с помощью таких команд, как git merge
или git rebase
git revert
Команда, создающая новый коммит, применяющий изменения, противоположные коммиту, указанному в качестве аргумента. Эта команда используется для “отката” изменений, сохраняя при этом историю изменений. В отличие от git reset
, которая удаляет историю коммитов, git revert
сохраняет историю и предоставляет безопасный способ отмены изменений
git checkout
Команда, используемая для переключения между ветками или перемещения указателя HEAD на другой существующий коммит
git log
Эта команда используется для просмотра истории коммитов в текущей ветке. Самые свежие коммиты вверху.
git checkout [коммит]
git reset --soft [коммит]
Команды, которые могут переместить текущий указатель HEAD на указанный коммит без изменения файлов в рабочем каталоге
Обе команды переместят HEAD на указанный коммит. Однако git reset –soft также переместит указатель текущей ветки на указанный коммит, в то время как git checkout приведет к состоянию “отсоединенного HEAD” (то есть вы будете вне ветки).
Для чего это надо? Перемещение указателя HEAD без изменения файлов в рабочем каталоге может быть полезным в нескольких ситуациях:
Просмотр старых коммитов. Вы можете переключиться на предыдущий коммит, чтобы просмотреть код или тестировать его состояние в определенный момент времени, без необходимости изменять текущие файлы рабочего каталога.
Подготовка к слиянию или перебазированию. Если вы хотите подготовить ветку к слиянию или перебазированию, вы можете переместить HEAD на определенный коммит, чтобы убедиться, что никакие изменения в рабочем каталоге не потеряются или не будут случайно включены в слияние или перебазирование.
Временное отмена изменений. Вы можете использовать git reset –soft для временной отмены коммита, при этом изменения, которые были в этом коммите, останутся в индексе, позволяя вам модифицировать их перед тем, как сделать новый коммит.
Чистка рабочего каталога. Если ваш рабочий каталог “загрязнен” изменениями, которые вы не хотите коммитить, вы можете переместить HEAD и сбросить индекс, не затрагивая эти изменения. Затем вы можете продолжить работу с чистым индексом.
Стратегическое разделение работы. Если вы работаете над большой фичей и хотите разделить ее на несколько мелких коммитов, вы можете использовать git reset –soft для стратегического разделения изменений на более мелкие части без потери прогресса в работе.
git show [COMMIT_HASH]
Показывает информацию о конкретных коммитах, тегах или объектах. Она позволяет вам видеть как метаданные коммита (автор, дата, комментарий к коммиту), так и фактические изменения (diff) в содержимом, внесенные этим коммитом.
git commit -am
Git сохранит изменения только для отслеживаемых файлов, то есть для файлов, которые уже были добавлены в Git ранее. Новые (неотслеживаемые) файлы не будут включены в коммит, если вы не добавите их через git add перед коммитом.
3 основных состояния файлов в git
Staged (индексированные): Это изменения, которые вы добавили в область подготовленных файлов (staging area) с помощью команды git add. Эти изменения будут включены в ваш следующий коммит.
Unstaged (неиндексированные): Это изменения, которые вы сделали в файлах, уже отслеживаемых Git, но еще не добавленные в область подготовленных файлов. Если вы сделаете коммит в этом состоянии, то эти изменения не попадут в коммит.
Untracked (неотслеживаемые): Это файлы, которые находятся в вашем рабочем каталоге, но Git не отслеживает их изменения, потому что вы еще не выполнили для них git add. Эти файлы не будут включены в коммит, пока вы их не начнете отслеживать и не добавите в область подготовленных файлов.
git diff
Эта команда покажет различия между файлами в вашем текущем рабочем каталоге и последней фиксацией. Это полезно для просмотра изменений перед их фиксацией.
git rm file_name
Git прекращает отслеживание файла и удаляет его из файловой системы, если он не указан в файле .gitignore.
git commit --amend
Внести изменения в последний коммит. (когда чтото забыли). Дает вам возможность отредактировать сообщение коммита. Это полезно, когда вы хотите исправить или улучшить сообщение или добавить больше изменений в последний коммит.
git commit --amend --no-edit
Эта команда позволяет изменить последний коммит без изменения его сообщения коммита. Она полезна, когда вы хотите включить некоторые дополнительные изменения, о которых могли забыть перед коммитом.
git cherry-pick
Используется для копирования определенного коммита из одной ветки в другую, применяя изменения, внесенные в этот коммит.
Эта команда полезна, когда вы хотите включить изменения из коммита на другой ветке в вашу текущую рабочую ветку, не сливая полностью всю ветку. Она берет патч, который был представлен в одном коммите, и применяет его в виде нового коммита на вашей текущей ветке.
git rebase -i
Позволяет во время обычного ребейза выбирать коммиты, которые останутся в ветке после выполнения команды.
Позволяет во время обычного ребейза редактировать изменения в одном или нескольких коммитах.
Подробнее о git rebase (перебазирование коммитов и веток) можно почитать в блоге selectel