Начало работы
Создание репозитория
Создайте новый локальный репозиторий ``Сценарий оболочки $ git init [имя проекта]
Клонировать репозиторий
``Скрипт оболочки
$ git clone git_url
Клонирование репозитория в указанную директорию
$ git clone git_url my_directory
Внести изменения
Показать измененные файлы в рабочем каталоге, поставленные для следующей фиксации ``Сценарий оболочки $ git status
Ставит файл в состояние готовности к фиксации
``Скрипт оболочки
$ git add [file]
Ставит все измененные файлы, готовые к фиксации ``Сценарий оболочки $ git add .
Зафиксировать все поэтапные файлы в истории версий
``Скрипт оболочки
$ git commit -m "commit message"
Зафиксировать все отслеживаемые файлы в истории версий
$ git commit -am "commit message"
Отбросить изменения в рабочем каталоге, который не является ступенчатым ``Скрипт оболочки $ git restore [file]
Снять с хранения ступенчатый файл или файл, который является ступенчатым
``Скрипт оболочки
$ git restore --staged [file]
Снять файл с сохранением изменений в файле ``сценарий оболочки $ git reset [file]
Вернуть все к последнему коммиту
``Скрипт оболочки
$ git reset --hard
Diff того, что изменено, но не поставлено ``Скрипт оболочки $ git diff
Дифф того, что поставлено, но еще не зафиксировано
``Скрипт оболочки
$ git diff --staged
Применить все коммиты текущей ветки вперед указанной ``Скрипт оболочки $ git rebase [branch]
### Конфигурация
Задайте имя, которое будет прикрепляться к вашим коммитам и тегам
``Сценарий оболочки
$ git config --global user.name "name"
Установка адреса электронной почты, который будет прикрепляться к вашим коммитам и тегам
$ git config --global user.email "email"
Включить некоторую раскраску вывода Git’а
$ git config --global color.ui auto
Редактирование файла глобальной конфигурации в текстовом редакторе
$ git config --global --edit
Работа с ветвями
Список всех локальных ветвей ``Сценарий оболочки $ git branch
Список всех ветвей, локальных и удаленных
``` сценарий оболочки
$ git branch -av
Переключение на ветку my_branch и обновление рабочего каталога ``Скрипт оболочки $ git checkout my_branch
Создать новую ветку с именем new_branch
``Скрипт оболочки
$ git checkout -b new_branch
Удалить ветку с именем my_branch
$ git branch -d my_branch
Объединить веткуА с веткойВ
$ git checkout branchB
$ git merge branchA
Пометить текущий коммит ``Сценарий оболочки $ git tag my_tag
### Наблюдение за вашим репозиторием
Показать историю коммитов для активной в данный момент ветки
``Сценарий оболочки
$ git log
Показать коммиты на веткеА, которых нет на веткеВ
$ git log branchB..branchA
Показать коммиты, изменившие файл, даже при переименовании
$ git log --follow [file]
Показать разницу между тем, что есть в веткеА, и тем, чего нет в веткеВ
$ git diff branchB...branchA
Показать любой объект в Git в человекочитаемом формате ``Сценарий оболочки $ git show [SHA]
### Синхронизация
Получить все ветки с данного Git-узла
``Сценарий оболочки
$ git fetch [alias]
Слияние удаленной ветки с текущей веткой для приведения ее в актуальное состояние ``Скрипт оболочки $ git merge [alias]/[branch]
Без перемотки вперед
$ git merge –no-ff [alias]/[branch]
Только быстрая перемотка
$ git merge –ff-only [alias]/[branch]
Передача коммитов локальной ветки в ветку удаленного репозитория
``Сценарий оболочки
$ git push [alias] [branch]
Получить и объединить все коммиты из отслеживаемой удаленной ветки ``Сценарий оболочки $ git pull
Слияние только одного конкретного коммита из другой ветки в вашу текущую ветку
``Скрипт оболочки
$ git cherry-pick [commit_id]
Удаленный
Добавление URL-адреса git в качестве псевдонима ``Сценарий оболочки $ git remote add [alias] [url]
Показать имена настроенных удаленных репозиториев
``` сценарий оболочки
$ git remote
Показать имена и URL-адреса удаленных репозиториев ``Сценарий оболочки $ git remote -v
Удалить удаленный репозиторий
``` сценарий оболочки
$ git remote rm [имя удаленного репозитория]
Изменить URL-адрес git-репозитория
$ git remote set-url origin [git_url]
Временные фиксации
Сохранение модифицированных и поэтапных изменений ``Сценарий оболочки $ git stash
Перечислить порядок хранения изменений в файлах
``Сценарий оболочки
$ git stash list
Запись работы с вершины стека хранения ``Скрипт оболочки $ git stash pop
Удаление изменений из верхней части стека stash
``сценарий оболочки
$ git stash drop
Отслеживание изменений пути
Удаление файла из проекта и постановка удаления на фиксацию ``Сценарий оболочки $ git rm [file]
Изменение пути к существующему файлу и постановка перемещения
``Сценарий оболочки
$ git mv [existing-path] [new-path]
Показать все журналы фиксации с указанием путей, которые были перемещены
$ git log --stat -M
Игнорирование файлов
/logs/*
# "!" означает не игнорировать
!logs/.gitkeep
/# Игнорировать системные файлы Mac
.DS_store
# Игнорировать папку node_modules
node_modules
# Игнорировать файлы конфигурации SASS
.sass-cache
Файл .gitignore
задает намеренно неотслеживаемые файлы, которые Git должен игнорировать
Трюки Git
Переименование ветки
-
Переименована в
командный сценарий $ git branch -m <new_name>new_name
. -
Толкаем и сбрасываем.
``Шелл-скрипт $ git push origin -u <new_name> -
Удаление удаленной ветки
$ git push origin --delete <old>
{.marker-timeline}
Журнал
Поиск изменений по содержимому командный сценарий $ git log -S’<a термин в источнике>'
Показать изменения во времени для конкретного файла
``Шелл-скрипт
$ git log -p <имя_файла>
Вывести классную визуализацию вашего журнала
$ git log --pretty=oneline --graph --decorate --all
Ветви
Список всех ветвей и их восходящих потоков
$ git branch -vv
Быстрый переход к предыдущей ветке
$ git checkout -vv
Получение только удаленных веток
$ git branch -r
Проверка одного файла из другой ветки
$ git checkout <branch> -- <file>
Переписывание истории
Переписать последнее сообщение о фиксации командный сценарий $ git commit –amend -m “new message”
Внесение изменений в последний коммит без изменения сообщения коммита.
``Основной сценарий
$ git commit --amend --no-edit
См. также: Переписывание истории
Псевдонимы Git
``cmd git config –global alias.co checkout git config –global alias.br branch git config –global alias.ci commit git config –global alias.st status
См. также: [Другие псевдонимы](https://gist.github.com/johnpolacek/69604a1f6861129ef088)
Расширенный Git
------------
### Субмодули
Создайте новый подмодуль в вашем репозитории:
``шелл-скрипт
$ git submodule add <repository_url> <path>
Клонирование репозитория и инициализация его субмодулей:
$ git clone --recursive <repository_url>
Обновите все подмодули в репозитории до последней фиксации соответствующих веток: ``шелл-скрипт $ git submodule update
Извлеките последние изменения из удаленных репозиториев подмодулей и обновите их в своем основном репозитории:
``Основной скрипт
$ git submodule update --remote
Удалить подмодуль из репозитория: ``шелл-скрипт $ git submodule deinit $ git rm <путь> $ git commit -m “Удален субмодуль”
### Cherry-picking
Cherry-picking позволяет применить определенный коммит из одной ветки к другой ветке.
``` Шелл-скрипт
$ git cherry-pick <commit_hash>
Рефлог
Отображение рефлога, показывающего историю перемещений HEAD и ветки: ``Основной сценарий $ git reflog
Найдите хэш потерянного коммита или ветки с помощью reflog и выполните checkout на этот хэш для его восстановления:
``шелл-скрипт
$ git checkout <хэш_коммита_или_ветви>