This commit is contained in:
Andrei Astafev 2019-05-28 14:15:34 +03:00
parent 0bc4923a7b
commit 0003a98c30

View File

@ -45,13 +45,13 @@ sudo apt-get install git
Файлы в рабочем каталоге могут отслеживаться системой контроля версий Файлы в рабочем каталоге могут отслеживаться системой контроля версий
(tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме (tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме
обозначены зелёным фоном, могут быть неизменёнными (unmodified), обозначены зелёным фоном, могут быть неизменёнными (unmodified),
изменёнными (modified) или подготовленными к фиксации (staged). изменёнными (modified) или подготовленными к фиксации (indexed).
```plantuml ```plantuml
@startuml @startuml
participant untracked as "Неотслеживамые\n(untracked)" participant untracked as "Неотслеживамые\n(untracked)"
box "Отслеживаемые" box "Отслеживаемые"
participant staged as "Подготовленные к фиксации\n(staged)" #55FF55 participant staged as "Подготовленные к фиксации\n(indexed)" #55FF55
participant unmodified as "Неизменённые\n(unmodified)" #99FF99 participant unmodified as "Неизменённые\n(unmodified)" #99FF99
participant modified as "Изменённые\n(modified)" #77FF77 participant modified as "Изменённые\n(modified)" #77FF77
end box end box
@ -174,6 +174,7 @@ git rm <path/to/submodule>
* Обращение к удалённому репозиторию осуществляется по ссылке, создаваемой командой `git remote` * Обращение к удалённому репозиторию осуществляется по ссылке, создаваемой командой `git remote`
* Команда `git clone` автоматически создаёт ссылку `origin` * Команда `git clone` автоматически создаёт ссылку `origin`
## Отправка изменений ## Отправка изменений
| Команда | Ключи | Описание | | Команда | Ключи | Описание |
@ -188,118 +189,33 @@ git rm <path/to/submodule>
| Команда | Ключи | Описание | | Команда | Ключи | Описание |
| ---- | ---- | ------------ | | ---- | ---- | ------------ |
| `git fetch` | `<remote>` | Получить изменения из всех веток репозитория `<remote>`, но не выполнять слияние | | `git fetch` | `<remote>` | Получить изменения из всех веток репозитория `<remote>`, но не выполнять слияние |
| `git fetch` | `<remote> <branch>` | Fetch specific branch | | `git fetch` | `<remote> <branch>` | Получить изменения из ветки `<branch>` репозитория `<remote>`, но не выполнять слияние |
| `git merge` | `<remote>/<branch>` | Merge fetched remote | | `git merge` | `<remote>/<branch>` | Выполнить слияние с веткой `<branch>` репозитория `<remote>` |
| `git pull` | `<remote>` | Fetch and merge in one command | | `git pull` | `<remote>` | Получение и слияние |
Reference: https://git-scm.com/docs/git-fetch, https://git-scm.com/docs/git-pull
## $branch ## Ветки
| Команда | Ключи | Описание | | Команда | Ключи | Описание |
|---------|-------|----------| | ---- | ---- | ------------ |
| `git branch` | | List branches | | `git branch` | | Список локальных веток |
| `git branch` | `<branchname>` | Create new branch | | `git branch` | `-a` | Список локальных и удалённых веток |
| `git checkout` | `<sha-1>` | Switch to branch, or commit | | `git branch` | `<branch>` | Создать ветку `<branch>` |
| `git branch` | `-m <branchname> <newname>` | Rename branch | | `git checkout` | `<sha-1>` | Перейти к фиксации с идентификатором `<sha-1>` |
| `git merge` | `<branchname>` | Merge changes from `<branchname>` to current branch | | `git branch` | `-m <old> <new>` | Переименовать ветку `<old>` в `<new>` |
| `git branch` | `-d <branchname>` | `--delete` branch | | `git merge` | `<branch>` | Слить изменения из ветки `<branch>` в текущую ветку |
| `git branch` | `-d <branch>` | Удалить ветку `<branch>` |
Reference: https://git-scm.com/docs/git-branch
## $diff ## Сравнение
| Команда | Ключи | Описание | | Команда | Ключи | Описание |
|---------|-------|----------| | ---- | ---- | ------------ |
| `git diff` | | Compare **`working directory`** and **`index`** | | `git diff` | | Сравнить рабочий каталог и индекс |
| | `-cached` | Compare **`index`** and **`latest commit`** | | `git diff` | `-cached` | Сравнить индекс и последнюю фиксацию |
| | `HEAD` | Compare **`latest commit`** and **`working directory`** | | `git diff` | `HEAD` | Сравнить последнюю фиксацию и рабочий каталог |
| | `--stat` | Optional short format | | `git diff` | `--stat` | Краткий вывод результатов |
| | `<sha-1> <sha-1>` | 2 points in time to compare | | `git diff` | `<sha-1> <sha-1>` | Сравнить две точки с указанными индетификаторами |
| | `<dir> | <file>` | Compare whole directory or limit to file | | `git diff` | `<dir> | <file>` | Сравнивать только укзанный каталог `<dir>` или файл `<file>` |
| `git difftool` | | Отобразить результаты сравнения в программе, определяемой переменной `diff.tool` |
Reference: https://git-scm.com/docs/git-diff
**Examples:**
```shell
## compare changes made to README.md between working tree (default) and latest commit (HEAD)
$ git diff --stat HEAD ./path/README.md
## compare changes made to README.md between 2 specific points in time (e.g. 2 commits)
$ git diff --stat a649900 24bdd58 ./path/README.md
```
## $tag
| Команда | Ключи | Описание |
|---------|-------|----------|
| `git tag` | | List tags |
| `git tag` | `<v1.0.0>` | Create tag, from latest commit, lightweight |
| `git tag` | `-a <v1.0.0> -m "<msg>"` | Create tag, with `--annotate`, from latest commit |
| `git tag` | `-a <v1.0.0> -m "<msg>" <SHA-1>` | Create tag, with `--annotate`, from specific commit |
| `git tag` | `-d <v1.1.0>` | `--delete` tag |
| `git show` | `<v1.0.0>` | Show tag data and message |
| `git checkout` | `<v1.0.0>` | Switch to specific point tag (not editable) |
| `git push` | `<remote> <tag>` | Push specific tag to `<remote>` (recommended) |
| `git push` | `<remote> --tags` | Push all tags to `<remote>` (only if necessary) |
Инициализация репозитория в каталоге `dir`:
```sh
git init dir
```
Клонирование репозитория `repo`, принадлежащего пользователю `user`,
с сервера `gitlab.2` в каталог `dir`:
```sh
git clone git@gitlab.2:user/repo.git dir
```
Просмотр состояния рабочего каталога и репозитория:
```sh
git status
```
Краткая форма вывода состояния:
```sh
git status -s
```
Добавление файла `README.md` под версионный контроль и подготовка
к фиксации:
```sh
git add README.md
```
Удаление файла `README.md` из индекса репозитория:
```sh
git rm --cached README.md
```
Зафиксировать файлы, подготовленные к фиксации:
```sh
git commit
```
Зафиксировать все отслеживаемые файлы, которые были изменены:
```sh
git commit -a
```
Отправить все ветки репозитория на сервер с меткой `origin`:
```sh
git push origin
```