Skip to content
Open

2 #135

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
223 changes: 220 additions & 3 deletions 123.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,220 @@
igfisdhghdfgsklfdslgk
dfg;ldkfgsldfnsg;ns
f'sgn'slgsdf;\'n
# Инструкция для работы с Git и удалёнными репозиториями #

![Logo](https://www.freeshows.ru/i/news/img20210310_000.png)

## Что такое Git?

**Git** - это одна из реализаций распределённых систем контроля версий, имеющая как и локальные, так и удалённые репозитории. Является самой популярной реализацией систем контроля версий в мире.

---

## Подготовка репозитория

Для создания репозитория необходимо выполнить команду **git init** в папке с репозиторием, и у Вас создаться репозиторий (появиться скрытая папка.git)

---

## Слежение за новыми файлами и их фиксация

***Чтобы*** начать управление версиями существующих файлов, укажите файлы, за которыми должна следить система, и выполните первую фиксацию изменений. Для этого потребуется несколько команд **git add**, добавляющих файлы, за которыми вы хотите следить, а затем команда **git commit**:


> git add Имя_файла.тип_файла
>
> git commit -m 'комментарий'


Чуть позже мы подробно рассмотрим, что делают эти команды. А пока у вас есть ре- позиторий Git с добавленными туда файлами и первой зафиксированной версией.

---

## Отчет о состоянии
***Чтобы*** узнать, что Git думает о нашей папке и что в ней происходит, проверить статус папки, нужно ввести команду **git status**

---

## Просмотр индексированных и неиндексированных изменений

***Чтобы*** получить не только список отредактированных файлов, но и узнать, что именно изменилось, воспользуйтесь командой **git diff**. Она даст ответ на два вопроса: что вы отредактировали (но пока не проиндексировали) и что из проиндексированного готово к фиксации?

---

## Просмотр истории версий

После сохранения нескольких версий файлов или клонирования уже имеющего содержимое репозитория вы, скорее всего, захотите взглянуть на то, что было сделано ранее. Базовым и самым мощным инструментом в данном случае является команда **git log**.

>$ git log
>commit >ca82a6dff817ec66f44342007202690a93763949 >>Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700

changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2008 -0700

removed unnecessary test

commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 10:31:28 2008 -0700

first commit

По умолчанию при отсутствии параметров команда **git log** выводит в обратном хронологическом порядке список сохраненных в данный репозиторий версий. То есть первыми показываются самые свежие коммиты. Как видите, рядом с каждым коммитом указывается его контрольная сумма SHA-1, имя и электронная почта автора, дата создания и сообщение о фиксации.

---

## Перемещения между версиями

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

> git checkout и первые 4 символа от номера ветви

***Чтобы*** продолжить работу после того как мы переключались между разными версиями (ветвями), нам необходимо вернуться в актуальное состояние.
Для этого нужно ввести команду **git checkout master**

---

## Что происходит, если переименовать файл?

Git следит за файлами по их именам. Если у нас больше нет файла с таким именем, значит Git будет считать, что файл удалён и что есть неотслеживаемый файл с новым названием


***Чтобы*** это исправить мы можем добавить наш файл с правильным именем в отслеживаемый, сделать новый commit

> git add Имя_файла.тип_файла
>
> git commit -m 'комментарий'

## Создание новой ветки

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

> git branch name_branch

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

> git checkout name_branch

---

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

***Чтобы*** добавить ветку к основной (главной) нужно ввести команду

> git merge name_branch

Прежде чем начинать слияние, нужно перейти на ветку мастер. Эта команда работает только если ты сливаешь дополнительную ветку к основной.

## Удаление ветки

***После*** того как мы объединили основную ветку с дополнительной, вторую нам нужно удалить с помощью команды

> git branch -d name_branch

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

## Скачивание репозитория на свой компьютер

#### ***Чтобы*** скачать репозиторий с сервиса GitHub, нужно создать папку на рабочем столе и открыть её в Studio Visual Code. Далее ввести в терминал команду git clone и ссылку на репозиторий. После того как мы перешли на нужный нам репозиторий, файл которого был помещен в созданную нами заранее папку, мы должны изменить наше местоположение и перейти в папку которую мы скачали вместе с репозиторием. ***Для этого*** нужно ввести в терминал команду cd и название папки. Это локальный способ работы с файлом. Да, мы скачиваем из сети файл, но все изменения хранятся на компьютере.

## Загрузка репозитория в сеть

#### ***Чтобы*** наш репозиторий оказался на GitHub, нужно создать новый репозиторий на сервисе, нажав кнопку
> Create repository

#### Далее есть 3 варианта, которые нам подсказывает GitHub:

1. создать и начать через терминал с ним работать (список команд в подсказке);
2. уже существующий репозиторий с компьютера привязать к этому;
3. импортировать код репозитория.

> git remote add name_repository и ссылка

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

> git branch -M main

Эта команда указывает какая ветка будет являться основной.

> git push -u name_repository main

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

Это одноразовая работа, а всё идёт по другому, всё меняется несколько раз. Если мы опять что-то поменяли и хотим направить эти изменения в интернет, то:

> git push
---
Если на сайте GitHub более актуальная версия файла, то:

> git pull

#### Это значит стянуть с удаленного репозитория.
---
***Чтобы*** наш репозиторий улучшили с другого репозитория, но при этом сделали эти изменения с нашего позволения, есть команда:

> PULL REQUEST
---
***Чтобы*** взять чей-то репозиторий с сервиса GitHub нужно сделать:

> FORK

В переводе как ответвление репозитория или вилка. ***Далее*** с нашего аккаунта мы можем этот репозиторий забрать, скопировав ссылку и добавить скаченный уже к существующему.
---
Также принято добавлять новую ветку с описанием файла или этого проекта. Например:

> git branch description

Переходим на неё

> git checkout description

И создаем новый файл под названием README.md. Далее мы можем проверить появился ли он командой git status и добавить его к отслеживаемым файлам:

> git add README.md

> git commit -m "add description"

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

> git push --set-upstream name_repository description

После обновляем GitHub и появляется кнопка

> Compare & pull request

Далее нам показывают есть конфилкт при слиянии или нет и предлагает добавить описание или какую-то информацию. После мы можем можем направить тот самый pull request, нажав на кнопку:

> Create pull request

Именно так происходит работа над OPEN SOURSE (значит открытый исходный код) проектами.
---
##### **Все изменения нужно сохранять в виде отдельных commit*
***

# Подведем итог списком команд и их значений


* **git init** - позволяет из нашей папки сделать репозиторий

* **git add** - добавление файла к отслеживанию программой Git

* **git commit** - сохраняет текущее состояние и фиксирует изменения в Git

> - а "изменение"
> - m "добавление"


* **git diff** - разница между текущим файлом и изменённым (сохранённым)

* **git log** - показывает журнал всех изменений

* **git checkout** - переход в выбранное состояние файла

* **git checkout name_branch** - переход в выбранную нами ветку

* **git branch name_branch** - создание новой ветки

* **git merge name_branch** - слияние ветки, название которой мы указали с веткой master

* **git branch -d name_branch** - удаление ветки, после слияния с основной

---

##### P. S.: thank you for your attention! ~~Buy~~ Goodbuy