GIT Шпаргалка: Cherry-pick, Stash, Remote, Fetch, Pull, Push, Merge, Rebase, и многое другое!

# GIT Шпаргалка

Изучите GIT: https://learngitbranching.js.org/

## Содержание

- [Cherry-pick](#cherry-pick)
- [Stash](#stash)
- [Remote, Fetch, Pull, Push](#remote-fetch-pull-push)
- [Pull](#pull)
- [Push](#push)
- [Merge, Rebase](#merge-rebase)
- [Checkout, Branch](#checkout-branch)
- [Add, Commit, Status, Show](#add-commit-status-show)
- [Log](#log)
- [Search in Log](#search-in-log)
- [Tagging](#tagging)
- [Clone, Init (Create Repo)](#clone-init-create-repo)
- [Config - (Settings, Setup, Option)](#config---settings-setup-option)
- [Tracking (rm mv)](#tracking-rm-mv)
- [Revert](#revert)
- [Reset](#reset)
- [Reflog](#reflog)
- [Grep (Search)](#grep-search)
- [Submodules](#submodules)
- [GIT Config Best Setup](#git-config-best-setup)

## Cherry-pick

**Примечание:** cherry-pick из одной ветки в другую невозможен, вам всегда нужно переключиться на нужную ветку (checkout).

### Примеры

- Перенос коммита из ветки "feature" в ветку "main":
  ```bash
  git checkout main
  git cherry-pick abc123
  • Перенос нескольких несмежных коммитов:

    git cherry-pick abc123 def456 ghi789
  • Перенос диапазона коммитов:

    git cherry-pick abc123..def456
  • Разрешение конфликтов (если они возникли):

    git cherry-pick --continue
  • Отмена cherry-pick:

    git cherry-pick --abort

Stash

По умолчанию Git пропускает неотслеживаемые или игнорируемые файлы при использовании stash.

Команды

  • Сохранить измененные/подготовленные файлы:

    git stash
  • Сохранить измененные/подготовленные/неотслеживаемые файлы:

    git stash -u
  • Сохранить измененные/подготовленные/неотслеживаемые/игнорируемые файлы:

    git stash -a
  • Сохранить изменения с сообщением:

    git stash save "сообщение о сохранении"
  • Показать все доступные stashes:

    git stash list
  • Восстановить последние изменения и удалить stash:

    git stash pop
  • Восстановить указанные изменения без удаления stash:

    git stash apply stash@{1}
  • Восстановить удаленный stash, зная его хэш:

    git stash apply [stash-hash]
  • Удалить stash:

    git stash drop
  • Показать различия в последнем stash:

    git stash show stash@{1}

Remote, Fetch, Pull, Push

Эти команды помогают загружать обновления из другого репозитория и обновлять локальный репозиторий.

Команды

  • Добавить удалённый репозиторий:

    git remote add [псевдоним] [URL]
  • Загружать все ветки из удаленного репозитория:

    git fetch
  • Загружать и удалять локальные ветки, которые отсутствуют в удаленном репозитории:

    git fetch --prune

Pull

Команды

  • Получить и слить коммиты из текущей отслеживаемой удаленной ветки:

    git pull
  • Получить и слить с удаленного репозитория с удалением несуществующих веток:

    git pull --prune
  • Запросить изменения только в том случае, если они могут быть «fast-forward» (без создания новых коммитов):

    git pull --ff-only

Push

Команды

  • Отправить текущую ветку на удаленный репозиторий:

    git push
  • Отправить текущую ветку и установить отслеживаемую ветку:

    git push --set-upstream origin HEAD
  • Отправить локальные коммиты на удаленную ветку:

    git push origin [ветка]

Merge, Rebase

Merge

  • Слить указанную ветку в текущую:
    git merge [ветка]

Rebase

  • Применить изменения из текущей ветки на указанную ветку:
    git rebase [ветка]

Checkout, Branch

Checkout

  • Переключиться на другую ветку:

    git checkout branch_name
  • Создать новую ветку и сразу переключиться на неё:

    git checkout -b new_branch_name

Branch

  • Показать все локальные ветки:

    git branch
  • Создать новую ветку из текущего коммита:

    git branch [имя-ветки]
  • Переименовать ветку:

    git branch --move [старое-имя] [новое-имя]

Add, Commit, Status, Show

Commit

  • Зафиксировать изменения с сообщением:
    git commit -m "ваше сообщение коммита"

Status

  • Показать измененные файлы в рабочем каталоге, которые готовятся к следующему коммиту:
    git status

Log

  • Показать историю коммитов в текущей ветке:
    git log

Search in Log

  • Найти изменения с определенной строкой:
    git log -S "поисковый_термин"

Tagging

  • Показать все теги:

    git tag
  • Создать новый тег:

    git tag v1.0

Clone, Init (Create Repo)

  • Создать локальный Git репозиторий:

    git init
  • Клонировать удаленный репозиторий:

    git clone 

Config - (Settings, Setup, Option)

Remote

  • Показать удалённые URLs:

    git remote -v
  • Изменить URL удаленного репозитория:

    git remote set-url origin [новый_URL]

List

  • Показать все настройки:
    git config --list

Tracking (rm mv)

  • Удалить файл из проекта и подготовить удаление для коммита:
    git rm [файл]

Revert

  • Создать новый коммит, в котором будут отменены все изменения определенного коммита:
    git revert [коммит]

Reset

  • Сбросить последние два коммита:
    git reset HEAD~2

Reflog

  • Лог всех обновлений ссылок (например, checkout, reset):
    git reflog

Grep (Search)

  • Искать в рабочем каталоге:
    git grep -n поиск_запроса

Submodules

  • Инициализировать все подмодули:
    git submodule update --init

GIT Config Best Setup

Эти настройки помогут вам настроить Git для лучшей производительности.

[core]
    ui = auto
[branch]
    sort = -committerdate
[tag]
    sort = version:refname
[push]
    default = simple

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *