---
metadata:
  - name: generator
    content: Diplodoc Platform v5.55.2
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/tutorials/quickstart-git.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/quickstart-git.md
  - href: ru/sourcecraft/tutorials/quickstart-git.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

# Как начать работать с git

[Git](https://git-scm.com/) — это распределенная [система контроля версий](https://yandex.cloud/ru/docs/glossary/vcs), которая помогает разработчикам отслеживать изменения в коде, работать в команде и управлять историей проекта. Она позволяет сохранять разные версии файлов, возвращаться к ним при необходимости и совместно работать над одним проектом без потери данных.

Использование git значительно упрощает работу над сложными проектами, обеспечивает прозрачность изменений и помогает избегать конфликтов при совместной работе.

В этом руководстве рассмотрим основные команды для работы с git без использования графического интерфейса:

1. [Подготовка к работе](#before-you-begin).
1. [Работа с репозиторием](#repo).
1. [Работа с ветками](#branches).
1. [Коммиты](#commits).
1. [Отправка изменений](#push).
1. [Решение конфликтов](#conflicts).
1. [Дополнительные команды](#additional-commands).

## Перед началом работы {#before-you-begin}

Установите git:

{% list tabs group=instructions %}

- Windows {#windows}

  1. Скачайте git с [официального сайта](https://git-scm.com/downloads).
  1. Запустите установочный файл и следуйте указаниям мастера установки.
  1. В процессе установки выберите опцию интеграции с командной строкой или PowerShell.

- Linux {#linux}
  
  В терминале выполните команду:

  ```bash
  sudo apt update && \
  sudo apt install git
  ```

  {% note info %}

  Если вы используете дистрибутив, отличный от Ubuntu или Debian, установите git с помощью команд вашего пакетного менеджера.

  {% endnote %}

- macOS {#macos}

  1. Установите пакетный менеджер [Homebrew](https://brew.sh/) с помощью команды в терминале:
  
      ```bash
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      ```

  1. Установите git:
  
      ```bash
      brew update && \
      brew install git
      ```

{% endlist %}

## Работа с репозиторием {#repo}

### Инициализация репозитория (git init) {#new-repo}

_Инициализация_ нужна для того, чтобы git проиндексировал файлы в директории и начал отслеживать изменения в ней. 

1. Создайте директорию для вашего проекта с помощью команды в терминале:
  
    ```bash
    mkdir <путь_к_директории>
    ```

    Если нужно инициализировать репозиторий в уже существующей директории, пропустите этот шаг.

1. Перейдите в директорию с проектом:

    ```bash
    cd <путь_к_директории>
    ```

1. Чтобы инициализировать репозиторий, выполните команду:

    ```bash
    git init
    ```

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

{% note tip %}

Также вы можете [создать](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/repo-create.md) репозиторий в SourceCraft и [склонировать](#clone-repo) себе уже инициализированный репозиторий.

{% endnote %}

### Клонирование существующего репозитория (git clone) {#clone-repo}

Чтобы клонировать существующий репозиторий, выполните команду:

```bash
git clone <ссылка_на_репозиторий>
```

Будет создана локальная копия удаленного репозитория на вашем компьютере.

<!-- source: ru/_includes/sourcecraft/private-repo-clone-note.md -->
{% note warning %}

Чтобы склонировать [приватный или внутренний репозиторий](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#repos), аутентифицируйтесь с помощью [персонального токена (PAT)](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/pat.md) или [SSH-ключа](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/ssh.md).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/private-repo-clone-note.md -->

### Обновление локальной копии репозитория (git fetch и git pull) {#fetch-repo}

Чтобы получить изменения из удаленного репозитория, выполните команду:

```bash
git fetch
```

Изменения скачаются во внутреннее хранилище git и будут доступны в удаленных ветках, например `origin/main`, но ваши локальные ветки не изменятся.

Чтобы объединить эти изменения с вашей текущей веткой, выполните команду:

```bash
git pull
```

## Работа с ветками {#branches}

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

### Основная или главная ветка (main) {#main-branch}

В большинстве проектов основная ветка называется `main` или `master`. В ней обычно хранится стабильная версия проекта — то, что готово к релизу или использованию. Не рекомендуется сразу вносить изменения в основную ветку — лучше создавать отдельные ветки для разработки новых функций или исправлений.

Чтобы посмотреть все локальные ветки, выполните команду:

```bash
git branch
```

Рабочая ветка будет отмечена символом `*`.

{% note tip %}

Также вы можете посмотреть все ветки репозитория в интерфейсе SourceCraft. Для этого на странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-trunk.svg) **Ветки**.

{% endnote %}

### Отвести ветку (git branch) {#new-branch}

_Отвести ветку_ означает создать независимую копию текущей ветки репозитория, чтобы работать над изменениями отдельно от основной линии. Перед началом работы всегда выполняйте `git pull`, чтобы быть уверенным в актуальности ветки и данных в ней.

Чтобы отвести новую ветку, выполните команду:

```bash
git branch <имя_ветки>
```

Чтобы отвести ветку и сразу перейти на нее, выполните команду:

```bash
git checkout -b <имя_ветки>
```

### Переключение между ветками (git checkout) {#switch-branch}

Чтобы перейти на другую существующую ветку, выполните команду:

```bash
git checkout <имя_ветки>
``` 

### Объединение веток (git merge) {#merge-branch}

Объединение (merge) веток используется, чтобы соединить изменения из одной ветки с другой. Например, чтобы внести подготовленные исправления или обновления в основную ветку. Процесс происходит путем слияния содержимого выбранных веток в одну, объединяя все внесенные изменения. 

Когда работа в отведенной ветке завершена, чтобы объединить ее с основной, поочередно выполните команды:

1. Переключитесь на целевую ветку, например `main`:
   
    ```bash
    git checkout main
    ```

1. Выполните слияние:

    ```bash
    git merge <имя_ветки_с_изменениями>
    ```

Если в процессе объединения возникнут конфликты, их нужно [решить](#conflicts) вручную.

После успешного слияния ветка, которая «вливалась» в основную, обычно не удаляется автоматически — ее нужно [удалить](#delete-branch) вручную.

{% note tip %}

Для безопасного объединения веток с возможностью рецензирования изменений и автоматическими проверками в SourceCraft предусмотрен механизм [предложений изменений (pull requests)](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr). Подробнее на странице [Предложить изменения в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/pr-create.md).

{% endnote %}

### Удаление ветки (git branch -d) {#delete-branch}

Если ветка больше не нужна, ее можно удалить командой:

```bash
git branch -d <имя_ветки>
```

Если у вас есть невнесенные изменения в ветке, которые могут быть потеряны при удалении, команда выдаст ошибку. Посмотреть текущие невнесенные изменения можно с помощью команды:

```bash
git status
```

В ответном сообщении будут выведены файлы с изменениями, которые не были добавлены в коммит.

Чтобы принудительно удалить ветку, выполните команду:

```bash
git branch -D <имя_ветки>
```

{% note warning %}

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

{% endnote %}

### Дополнительные действия с ветками {#additional-actions}

Чтобы отправить ветку на сервер, выполните команду:

```bash
git push origin <имя_ветки>
```

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

Чтобы просмотреть все ветки в репозитории, выполните команду:

```bash
git branch -a
```

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

Чтобы восстановить ранее удаленную ветку, выполните команду:

```bash
git checkout -b <имя_новой_ветки> <имя_удаленной_ветки>
```

Из удаленной ветки будет создана новая ветка. Это позволит восстановить утерянные или ошибочно стертые данные.

## Коммиты {#commits}

После сохранения изменений в файлах репозитория необходимо подготовить их к коммиту.

_Коммиты_ — это «снимки» состояния ваших файлов в определенный момент времени. Они позволяют отслеживать историю изменений и возвращаться к нужным версиям.

{% note tip %}

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

{% endnote %}

### Добавление изменения в коммит (git add) {#add-commit}

1. Посмотрите изменения, которые еще не были внесены в коммит:

    ```bash
    git status
    ```

1. Добавьте изменения в коммит одним из следующих способов:
    * Добавить изменения в конкретном файле:
  
      ```bash
      git add <имя_файла>
      ```

    * Добавить все измененные файлы в текущей директории:

      ```bash
      git add .
      ```

    * Добавить все измененные в репозитории файлы:

      ```bash
      git add --all
      ```

### Создание коммита с описанием (git commit) {#commit-with-desc}

Чтобы создать коммит с описанием внесенных изменений, выполните команду:

```bash
git commit -m "Описание изменений"
```

{% note tip %}

Используйте короткие сообщения при коммите — так легче ориентироваться.

{% endnote %}

### Изменение последнего коммита (git commit --amend -m) {#change-commit}

Чтобы изменить последний коммит, например, исправить описание изменений, выполните команду:

```bash
git commit --amend -m "Обновленное описание"
```

### Объединение коммитов (git rebase) {#squash-commits}

Объединение нескольких последних коммитов в один помогает сделать их историю более лаконичной или сгруппировать связанные изменения в единый логический блок.

Для этого удобно использовать интерактивное переписывание истории (`git rebase -i`), которое позволяет выбрать коммиты для объединения или изменить их порядок и содержание.

Чтобы запустить переписывание истории, выполните команду:

```bash
git rebase -i HEAD~N
```

Где `N` — число последних коммитов, которые нужно обработать.

В результате откроется редактор со списком выбранных коммитов. Чтобы объединить последние коммиты с предшествующими, нужно заменить слово `pick` на `squash` (или `s`).

{% note info %}

При переписывании истории могут возникнуть конфликты, которые потребуется [решить](#conflicts) вручную, а затем продолжить процесс командой:

```bash
git rebase --continue
```

{% endnote %}

#### Пример объединения коммитов {#squash-example}

Результат команды `git rebase -i HEAD~3` в редакторе:

```text
pick e3a1b35 Исправление опечатки
pick 7ac9a67 Добавление новой функции
pick 4f5d6e2 Обновление документации
```

Чтобы объединить последние три коммита в один, замените слова `pick` на `squash` (или `s`) у второго и третьего коммита:

```text
pick e3a1b35 Исправление опечатки
squash 7ac9a67 Добавление новой функции
squash 4f5d6e2 Обновление документации
```

После этого сохраните файл и закройте редактор. Выбранные коммиты объединятся.

### Удаление коммитов (git reset) {#delete-commits}

Чтобы удалить последний коммит, выполните команду:

```bash
git reset --hard HEAD~1
```

Чтобы удалить несколько последних коммитов, выполните команду:

```bash
git reset --hard HEAD~N
```

Где `N` — число последних коммитов, которые нужно удалить.

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

{% note warning %}

Будьте осторожны при использовании команды `git reset`. Вы можете потерять важные изменения, которые не были сохранены в других ветках или не зафиксированы в другом месте.

{% endnote %}

### Восстановление коммита (git cherry-pick) {#backup-commit}

Для восстановления ранее удаленного коммита понадобится его хеш (SHA).

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

{% note info %}

Коммит, который нужно восстановить, должен находиться в истории репозитория. Если коммит был полностью удален, например при `git push --force`, его восстановление невозможно.

{% endnote %}

1. Чтобы найти нужный коммит, посмотрите журнал ссылок, выполнив команду:
  
    ```bash
    git reflog
    ```
  
    Пример результата команды:
  
    ```bash
    abc1234 (HEAD -> master) HEAD@{0}: reset --hard HEAD~1
    def5678 (branch: master) HEAD@{1}: commit: Добавлено пояснение
    ghi9012 HEAD@{2}: commit: Исправлена ошибка
    ```

    Где:
    * `def5678` — хеш коммита;
    * `commit: Добавлено пояснение` — описание коммита.

1. В выводе команды найдите нужный коммит по его описанию.
1. Скопируйте его хеш. Обычно это первые 7–10 символов в начале строки.
1. Выберите один из вариантов восстановления:

    {% list tabs %}

    - В новую ветку

      Чтобы создать новую ветку на основе коммита и сразу переключиться на нее, выполните команду:
  
      ```bash
      git checkout -b <имя_новой_ветки> <хеш_коммита>
      ```
  
      Пример:
  
      ```bash
      git checkout -b restored-branch def5678
      ```
     
      В процессе восстановления могут возникнуть конфликты, которые потребуется [решить](#conflicts) вручную.
   
    - В текущую ветку

      Коммит будет добавлен в текущую рабочую ветку как последний. Изменения, сохраненные в нем, будут включены в ее историю, не затрагивая другие текущие изменения. В процессе добавления могут возникнуть конфликты, которые потребуется [решить](#conflicts) вручную перед завершением операции.
  
      Чтобы восстановить коммит в рабочей ветке, выполните команду:
  
      ```bash
      git cherry-pick <хеш_коммита>
      ```

    - Вернуть текущую ветку к состоянию коммита

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

      Чтобы сделать этот коммит текущим состоянием ветки, выполните команду:
  
      ```bash
      git reset --hard <хеш_коммита>
      ```

    {% endlist %}

### Просмотр коммита (git show) {#look-commit}
  
Просмотр коммита происходит вне какой-либо ветки. Чтобы посмотреть содержимое коммита прямо в терминале, выполните команду:
  
```bash
git show <хеш_коммита>
```
    
Чтобы выйти из режима просмотра, нажмите `q` на клавиатуре.
  
## Отправка изменений {#push}

_Push_ — это команда, которая отправляет ваши изменения с компьютера на сервер, чтобы другие участники проекта могли их увидеть и использовать.

{% note info %}

При попытке отправить большой файл в git по протоколу HTTPS могут возникать ошибки. Подробнее читайте в разделе [Вопросы работы с git в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/qa/sourcecraft-git.md#large-file).

{% endnote %}

### Отправить изменения (git push) {#send-push}

Чтобы отправить текущие изменения в удаленный репозиторий, выполните команду:

```bash
git push origin <имя_ветки_в_удаленном_репозитории>
```

### Отменить отправку изменений (git reset и git push) {#cancel-push}

Чтобы отменить ваши последние изменения на сервере и вернуть ветку к предыдущему состоянию, выполните следующие шаги:

1. Верните локальную ветку к состоянию перед последним коммитом. Для этого выполните команду, которая удалит последний коммит и восстановит файлы до предыдущего состояния:

    ```bash
    git reset --hard HEAD^
    ```

1. Обновите удаленную ветку, чтобы она соответствовала текущему состоянию локальной. Для этого выполните команду принудительной отправки изменений:

    ```bash
    git push --force
    ```
  
    Будьте осторожны, так как использование параметра `--force` может привести к потере данных у других участников проекта, если они уже синхронизировались с удаленным репозиторием. Изменения, внесенные ими после синхронизации, также будут стерты. Перед выполнением рекомендуется предупредить команду или убедиться, что никто не потеряет важную информацию.

    {% note info %}

    Если ваши изменения еще не внесены в коммит — сначала сделайте `commit`, затем `push`.

    {% endnote %}

## Решение конфликтов {#conflicts}

<!-- source: ru/_includes/sourcecraft/git-conflicts.md -->
_Конфликты слияния_ возникают, когда [git](https://git-scm.com/) не может автоматически объединить изменения из разных веток. Это происходит, когда в репозитории есть противоречивые изменения, сделанные в одних и тех же местах.

Причины возникновения конфликтов:
* Одновременная работа нескольких людей над одними файлами.
* Обновление локальной копии с сервера ([`git pull`](https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/quickstart-git.md#fetch-repo)), когда изменения в удаленном репозитории противоречат вашим локальным правкам.
* Слияние веток ([`git merge`](https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/quickstart-git.md#merge-branch)), если в них были сделаны разные изменения в одних и тех же участках кода.
* Попытка отправки изменений ([`git push`](https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/quickstart-git.md#send-push)) в удаленный репозиторий, если в нем уже есть коммиты, противоречащие вашим локальным правкам.

Типы конфликтов:
* [Конфликты изменения строк](#resolve-cli) — наиболее распространенный тип конфликта, который возникает, когда одна и та же строка файла изменена по-разному в разных ветках.
* [Конфликты в файловой структуре (tree conflicts)](#tree-conflicts) — возникают, когда один пользователь изменяет файл, а другой его удаляет.

### Как выглядят конфликты в файлах {#conflict-markers}

Когда `git` обнаруживает конфликт, он помечает проблемные участки специальными маркерами:

```text
Общая часть текста до конфликта
<<<<<<< HEAD
Изменения в текущей ветке
=======
Изменения во входящей ветке
>>>>>>> branch-name
```

Где:
* `<<<<<<< HEAD` — начало изменений в текущей ветке.
* `=======` — разделитель между версиями.
* `>>>>>>> branch-name` — конец изменений из входящей ветки.

### Разрешение конфликтов {#resolve}

{% list tabs group=instructions %}

- Интерфейс SourceCraft {#src}

  <iframe width="640" height="360" src="https://runtime.strm.yandex.ru/player/video/vplvor2l7ieyypvhqrjh?autoplay=0&mute=0" allow="autoplay; fullscreen; picture-in-picture; encrypted-media" frameborder="0" scrolling="no"></iframe>

  {% note warning %}

  Разрешение [конфликтов в файловой структуре](#tree-conflicts) недоступно в интерфейсе SourceCraft. Для разрешения таких конфликтов используйте командную строку или [SourceCraft Spaces](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/spaces.md).

  {% endnote %}

  1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
  1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
  1. Выберите репозиторий.
  1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
  1. Выберите предложение изменений и в правом верхнем углу нажмите ![image](../../_assets/console-icons/code-pull-request.svg) **Принять**.
  1. На странице предложения изменений изучите сообщение о конфликтах, например:

      ```text
      Объединение заблокировано
      ...
      В этой ветке есть конфликты, которые нужно разрешить
      filename.js
      CONFLICT (content): Automatic merge failed to resolve conflict in filename.js; Manual content merge required
      ```

  1. Нажмите **Разрешить в интерфейсе**.
  1. Откроется интерфейс редактирования кода, где будут помечены проблемные участки специальными маркерами:

      ```text
       1    ...
       2    Общая часть текста до конфликта
       3    ...
            [Принять текущее] [Принять входящее] [Принять оба изменения]
       4    <<<<<<< main
       5    Изменения в текущей ветке
       6    =======
       7    Изменения во входящей ветке
       8    >>>>>>> feature-branch
       9    ...
      10    Общая часть текста после конфликта
      11    ...
      ```

      Где:
      * `Принять текущее`, `Принять входящее`, `Принять оба изменения` — кнопки для разрешения отдельного конфликта.
      * `<<<<<<< main` — начало изменений в текущей ветке.
      * `=======` — разделитель между версиями.
      * `>>>>>>> feature-branch` — конец изменений из входящей ветки.

  1. Разрешите конфликты:

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

      * Чтобы разрешить все конфликты, справа вверху нажмите:
          * **Принять текущий** — принять все изменения из текущей ветки.
          * **Принять входящий** — принять все изменения из входящей ветки.

          {% note warning %}

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

          {% endnote %}

  1. Нажмите **Пометить решенным** и **Сохранить изменения**.

- Командная строка {#cli}

  1. Определите файлы с конфликтами, выполнив команду:

      ```bash
      git status
      ```

      Файлы с конфликтами отобразятся с пометкой `both modified`.
  1. Откройте файл с конфликтом в текстовом редакторе.
  1. Найдите маркеры конфликта (`<<<<<<<`, `=======`, `>>>>>>>`).
  1. Выберите вариант решения конфликта:
      * Удалите ненужную версию.
      * Создайте новый код, объединяющий обе версии.

      После внесения изменений удалите все маркеры конфликта.
  1. Сохраните файл.
  1. Добавьте измененный файл в индекс:

      ```bash
      git add <имя_файла>
      ```

  1. Завершите слияние:

      ```bash
      git commit -m "Resolve merge conflict"
      ```

  1. Опубликуйте изменения:
      
      ```bash
      git push
      ```

{% endlist %}

### Конфликты в файловой структуре (tree conflicts) {#tree-conflicts}

Чтобы разрешить конфликт, когда файл был изменен в одной ветке и удален в другой:
1. Посмотрите статус конфликта:

    ```bash
    git status
    ```

1. Выберите дальнейшее действие с файлом:
    * Чтобы оставить файл, выполните команду:

      ```bash
      git add <имя_файла>
      ```

    * Чтобы удалить файл, выполните команду:

      ```bash
      git rm <имя_файла>
      ```

1. Завершите слияние:

    ```bash
    git commit -m "Resolve file deletion conflict"
    ```

### Использование инструментов слияния {#merge-tools}

Для удобного разрешения конфликтов можно использовать графические инструменты.
Чтобы запустить настроенный инструмент слияния, например VS Code, Sublime Merge или другие, выполните команду:

```bash
git mergetool
```

### Прерывание слияния {#abort-merge}

Чтобы отменить слияние и вернуться к состоянию до начала операции, выполните команду:

```bash
git merge --abort
```
<!-- endsource: ru/_includes/sourcecraft/git-conflicts.md -->

Подробнее о разрешении конфликтов при слиянии веток смотрите в разделе [Разрешить конфликты при слиянии веток](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/resolve-merge-conflicts.md).

## Дополнительные команды {#additional-commands}

| Команда | Назначение команды |
| ------- | ------------------ |
| `git log` | Просмотр истории. |
| `git blame <имя_файла>` | Просмотр внесенных изменений в выбранном файле: показывает, какие пользователи и какую часть файла изменили. |
| `git blame -L <начальная_строка>,`<br>`<конечная_строка> <имя_файла>` | Просмотр изменений в определенном диапазоне строк в выбранном файле. |
| `git branch` | Просмотр всех веток репозитория. Активная ветка будет отмечена `*`. |
| `git checkout -- <файл>` | Отмена изменений в файле. Возвращает файл к последнему зафиксированному состоянию. |
| `git diff` | Просмотр отличий между вашими локальными неотправленными изменениями и последней версией ветки. |
| `git diff <имя_ветки>` | Просмотр отличий между вашими локальными неотправленными изменениями и последней версией другой ветки. |
| `git gc` | Оптимизирует локальный репозиторий, освобождая место на диске и удаляя забытые или потерянные данные, которые не используются текущими ветками, но все еще хранятся в репозитории. |
| `git tag` | Создание тегов для отметки важных точек в развитии проекта, например релизов. |
| `git remote add <имя_репозитория>`<br>`<ссылка_на_репозиторий>` | Связывает ваш локальный репозиторий с удаленным репозиторием, чтобы вы могли отправлять туда свои изменения или получать обновления. |
| `git remote -v` | Просмотр связанных с проектом удаленных репозиториев. |
| `git stash` | Временное сохранение изменений. |
| `git stash pop` | Восстановление временно сохраненных изменений. |
| `git reflog` | Отображает список изменений в журналах git. По умолчанию отображается список изменений в `HEAD`. |

### Полезные ссылки {#see-also}

* [Справочник git](https://git-scm.com/docs)
* [Как начать работать с SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/quickstart.md)
* [Взаимосвязь ресурсов SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md)
