From b95c61d4ea6f319602534a295922c9b139752841 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 1 Dec 2022 12:38:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git_manual.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 git_manual.md diff --git a/git_manual.md b/git_manual.md new file mode 100644 index 0000000..9779ed9 --- /dev/null +++ b/git_manual.md @@ -0,0 +1,97 @@ +# Инструкция к 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 + + + + From 986e100f4d234def9829b1a01d60e7e710d375eb Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 1 Dec 2022 12:54:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=20=D0=A0=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=20=D1=81=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git_manual.md | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) diff --git a/git_manual.md b/git_manual.md index 9779ed9..8ac51f6 100644 --- a/git_manual.md +++ b/git_manual.md @@ -92,6 +92,186 @@ 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 + + From e32b1bd92d0029293821841df4c9fd63ed1792fa Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 1 Dec 2022 12:58:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git_manual.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/git_manual.md b/git_manual.md index 8ac51f6..6db192b 100644 --- a/git_manual.md +++ b/git_manual.md @@ -168,8 +168,7 @@ URI репозитория на свой. различать, мы дадим им разные имена. Обычно главный репозиторий называется origin. - -3. Отправка изменений на сервер +### 3. Отправка изменений на сервер Сейчас самое время переслать наш локальный коммит на сервер. Этот процесс @@ -191,7 +190,7 @@ Total 3 (delta 0), reused 0 (delta 0) To https://github.com/tutorialzine/awesome-project.git -* [new branch] master -> master +[new branch] master -> master Эта команда немного похожа на *git fetch*, с той лишь разницей, что при помощи fetch @@ -235,7 +234,7 @@ $ git pull origin master From https://github.com/tutorialzine/awesome-project -* branch master -> FETCH_HEAD +branch master -> FETCH_HEAD Already up-to-date.