Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
276 changes: 276 additions & 0 deletions git_manual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,276 @@
# Инструкция к GIT.

**Git** — это набор консольных утилит, которые отслеживают и фиксируют изменения в файлах *(чаще всего речь идет об исходном коде программ, но вы можете использовать его для любых файлов на ваш вкус).* Изначально Git был создан Линусом Торвальдсом при разработке ядра Linux. Однако инструмент так понравился разработчикам, что в последствии, он получил широкое распространение и его стали использовать в других проектах. С его помощью вы можете сравнивать, анализировать, редактировать, сливать изменения и возвращаться назад к последнему сохранению. Этот процесс называется контролем версий.

## Настройка

Итак, мы установили ***git***, теперь нужно добавить немного настроек. Есть довольно много опций, с которыми можно играть, но мы настроим самые важные: наше имя пользователя и адрес электронной почты. Откройте терминал и запустите команды:

*git config --global user.name "UserName"*

*git config --global user.email userEmail@example.com*

Теперь каждое наше действие будет отмечено именем и почтой. Таким образом, пользователи всегда будут в курсе, кто отвечает за какие изменения — это вносит порядок.

## Основные команды

* __git init__ – инициализация локального репозитория

* __git status__ – получить информацию от git о его текущем состоянии

* __git add__ – добавить файл или файлы к следующему коммиту

* __git commit -m__ “message” – создание коммита.

* __git log__ – вывод на экран истории всех коммитов с их хеш-кодами

* __git checkout__ – переход от одного коммита к другому

* __git checkout master__ – вернуться к актуальному состоянию и продолжить работу

* __git diff__ – увидеть разницу между текущим файлом и закоммиченным файлом

* __git branch__ - просмотр веток

* __git branch new-branch__ - создает новую ветку с именем new-branch

* __git branch -d new-branch__ - удаляет ветку с именем new-branch

* __git checkout new-branch__ - переходит на ветку с именем new-branch

* __git log --graph__ - выводит список коммитов в виде красивого графа/дерева

* __git merge new-branch__ - сливает ветку ___new-branch___ с текущей веткой

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

### Слияние test с веткой master.

***Выполните:***

git checkout master

git merge test

***Результат:***

$ git merge test

Auto-merging test.txt

CONFLICT (content): Merge conflict in test.txt

Automatic merge failed; fix conflicts and then commit the result.

***Если вы откроете test.txt, вы увидите:***

<<<<<<< HEAD

git

=======

gif

\>>>>>>\> test

### Решение конфликта

Вам необходимо вручную разрешить конфликт. Внесите изменения в **test.txt** для

достижения следующего результата:

git

gif

### Сделайте коммит решения конфликта:

git add test.txt

git commit -m "merge"

[master a168dd3] merge

## Работа с удаленными репозиториями.

*Удаленные репозитории*

Сейчас наш коммит является локальным — существует только в директории .git на нашей

файловой системе. Несмотря на то, что сам по себе локальный репозиторий полезен, в

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

где он будет выполняться.

### 1. Что такое удаленный репозиторий

Репозиторий, хранящийся в облаке, на стороннем сервисе, специально созданном для

работы с git имеет ряд преимуществ. Во-первых - это своего рода резервная копия

вашего проекта, предоставляющая возможность безболезненной работы в команде. А еще

в таком репозитории можно пользоваться дополнительными возможностями хостинга. К

примеру -визуализацией истории или возможностью разрабатывать вашу программу

непосредственно в веб-интерфейсе.

### Клонирование

*Клонирование* - это когда вы копируете удаленный репозиторий к себе на локальный

ПК. Это то, с чего обычно начинается любой проект. При этом вы переносите себе все

файлы и папки проекта, а также всю его историю с момента его создания. Чтобы

склонировать проект, сперва, необходимо узнать где он расположен и скопировать

ссылку на него. В нашем руководстве мы будем использовать адрес

https://github.com/tutorialzine/awesome-project, но вам посоветуем, попробовать

создать свой репозиторий в GitHub, BitBucket или любом другом сервисе:

*git clone* https://github.com/tutorialzine/awesome-project

При клонировании в текущий каталог, там будет создана папка, в которую поместятся

все проектные файлы и скрытая директория .git, с самим репозиторием, или с

необходимой информацией о нем. В такой ситуации, для клонируемого репозитория, по

умолчанию, будет создана папка с одноименным названием, но его можно залить и в

другую директорию, например:

*git clone* https://github.com/tutorialzine/awesome-project new-folder

### 2. Подключение к удаленному репозиторию

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

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

предоставляют хорошую документацию.

Чтобы связать наш локальный репозиторий с репозиторием на GitHub, выполним

следующую команду в терминале. Обратите внимание, что нужно обязательно изменить

URI репозитория на свой.

*$ git remote add origin* https://github.com/tutorialzine/awesome-project.git

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

различать, мы дадим им разные имена. Обычно главный репозиторий называется origin.

### 3. Отправка изменений на сервер

Сейчас самое время переслать наш локальный коммит на сервер. Этот процесс

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

Команда, предназначенная для этого - *push*. Она принимает два параметра: имя

удаленного репозитория (мы назвали наш origin) и ветку, в которую необходимо внести

изменения (master — это ветка по умолчанию для всех репозиториев).

*$ git push origin master*

Counting objects: 3, done.

Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To https://github.com/tutorialzine/awesome-project.git

[new branch] master -> master

Эта команда немного похожа на *git fetch*, с той лишь разницей, что при помощи fetch

мы импортируем коммиты в локальную ветку, а применив *push*, мы экспортируем их из

локальной в удаленную. Если вам необходимо настроить удаленную ветку используйте

*git remote*. Однако пушить надо осторожно, ведь рассматриваемая команда

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

чтобы опубликовать выгружаемые локальные изменения в центральный репозиторий. А еще

ее применяют для того, чтобы поделиться, внесенными в локальный репозиторий,

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

Подытожив сказанное, можно назвать git push - командой выгрузки, а *git pull* и

*git fetch* - командами загрузки или скачивания. После того как вы успешно запушили
измененные данные, их необходимо внедрить или интегрировать, при помощи команды

слияния *git merge*.


В зависимости от сервиса, который вы используете, вам может потребоваться

аутентифицироваться, чтобы изменения отправились. Если все сделано правильно, то

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

hello.txt

### 4. Запрос изменений с сервера

Если вы сделали изменения в вашем удаленном репозитории, другие пользователи могут

скачать изменения при помощи команды *pull*.

$ git pull origin master

From https://github.com/tutorialzine/awesome-project

branch master -> FETCH_HEAD

Already up-to-date.

Так как новых коммитов с тех пор, как мы склонировали себе проект, не было, никаких

изменений доступных для скачивания нет.

Как удалить локальный репозиторий

Вам не понравился один из ваших локальных Git-репозиториев и вы хотите стереть его

со своей машины. Для этого вам всего лишь надо удалить скрытую папку «.git» в

корневом каталоге репозитория. Сделать это можно 3 способами:

Проще всего вручную удалить эту папку «.git» в корневом каталоге «Git Local

Warehouse».

Также удалить, не устраивающий вас, репозиторий можно на *github*. Открываете

нужный вам объект и переходите в пункт меню Настройки. Там, прокрутив ползунок

вниз, вы попадете в зону опасности, где один из пунктов будет называться «удаление

этого хранилища».

Последний метод удаления локального хранилища через командную строку, для этого в

терминале необходимо ввести следующую команду:

cd repository-path/

rm -r .git