diff --git a/git_manual.md b/git_manual.md new file mode 100644 index 0000000..6db192b --- /dev/null +++ b/git_manual.md @@ -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 + + + + +