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
90 changes: 88 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,88 @@
# Work_remote
Скоро я стану, как Илон Маск...
# Как начать пользоваться Git
___
[1. Что такое Git](#ЧтотакоеGit)
[2. Настройка Git](#НастройкаGit)
[3. Создание нового репозитория](#Созданиеновогорепозитория)
[4. Работа с изменениями](#Работасизменениями)
[5. Работа с ветками](#Работасветками)
[6. Удаленные репозитории](#Удаленныерепозитории)
___

## Что такое Git

+ `Git` — это распределенная система управления версиями, то есть локальный клон проекта — это полный репозиторий управления версиями. Полнофункциональные локальные репозитории упрощают работу как в автономном, так и в удаленном режиме. Разработчики фиксируют свою работу локально, а затем синхронизируют свою копию репозитория с копией на сервере.


+ `Для чего он нужен?` Ну во-первых, чтобы отследить изменения, произошедшие с проектом, со временем. Проще говоря, мы можем посмотреть как менялись файлы программы, на всех этапах разработки и при необходимости вернуться назад и что-то отредактировать
Во-вторых он чрезвычайно полезен при одновременной работе нескольких специалистов, над одним проектом
___

## Настройка Git
*Работа с любой программой всегда начинается с её настройки. Git можно настроить один раз и менять что-то только по мере необходимости*
+ Указать имя пользователя: `git config --global user.name "Ivan Ivanov"` **Задаёт имя пользователя, от которого будут идти коммиты. Вместо Ivan Ivanov нужно написать свои данные на латинице. Если имя состоит из одного слова, кавычки можно не ставить**
+ Указать электронную почту: `git config --global user.email "mail@gmail.com"`. **Вместо** `mail@gmail.com` **нужно указать вашу почту**.
___

## Создание нового репозитория
*git хранит свои файлы и историю прямо в папке проекта. Чтобы создать новый репозиторий, нам нужно открыть терминал, зайти в папку нашего проекта и выполнить команду* `git init`. *Это включит приложение в этой конкретной папке и создаст скрытую директорию .git, где будет храниться история репозитория и настройки*.
+ Определение состояния: Вводим команду `git status` что бы проверить состояние нашего репозитория. Скорее всего вам *Git* напишет что данный файл неотслеживаемый.Это значит, что файл новый и система еще не знает, нужно ли следить за изменениями в файле или его можно просто игнорировать. Для того, чтобы начать отслеживать новый файл, нужно его специальным образом объявить.
+ Подготовка файлов: Что бы объявить наш новый файл используем команду `Git add` и вводим имя нашего файла, **что бы упростить и ускорить работу можно ввести первую или пару букв и нажать клавишу** <kbd>TAB

+ Проверим статус снова, на этот раз мы должны получить другой ответ.
+ Файл готов к коммиту. Сообщение о состоянии также говорит нам о том, какие изменения относительно файла были проведены в области подготовки — в данном случае это новый файл.
___

## Работа с изменениями
*Представим, что нам нужно добавить пару новых блоков в наш файл. После выполнения данной операции мы должны обозначить эти файлы для Гита, при помощи команды `git add`, добавляющей (или подготавливающей) их к коммиту*
+ После того как мы обозначили,теперь создадим непосредственно сам коммит
+ Используем команду git commit с флагом (он обозначается как `-` и Английской буквой m) в совокупности у нас получиться вот так `git commit -m` . После букву `m` мы пишем в текст "Наш комантарий". **обязательно в двойном штрихе** `""`

+ Как посмотреть коммиты
+ Для просмотра все выполненных фиксаций можно воспользоваться историей коммитов. Она содержит сведения о каждом проведенном коммите проекта. Запросить ее можно при помощи команды: `git log`

+ В ней содержится вся информация о каждом отдельном коммите, с указанием его хэша, автора, списка изменений и даты, когда они были сделаны. Отследить интересующие вас операции в списке изменений, можно по хэшу коммита, при помощи команды: `git checkout`. Сам хэш выглядит вот так `1iu23iu3b4iygu4ib23i4uyiyg4i5i`.

+ Но можно вписать первых пять или более символов и нам покажет нужный коммит. Например `git checkout 1iu23`.
___

## Работа с ветками
*Во время разработки новой функциональности считается хорошей практикой работать с копией оригинального проекта, которую называют веткой. Ветви имеют свою собственную историю и изолированные друг от друга изменения до тех пор, пока вы не решаете слить изменения вместе. Это происходит по набору причин*:
+ Уже рабочая, стабильная версия кода сохраняется

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

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

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

1.**Создание новой ветки**
+ Основная ветка в каждом репозитории называется master. Чтобы создать еще одну ветку, используем команду `git branch` и задайте этой ветки имя, например: `git branch draft`
*Поздравляю мы создали новую ветку, пока что точную копию ветки master*
2. **Переключение между ветками**
Сейчас, если мы введем команду `git branch`и мы увидим две доступные опции:
draft
*master

Там где стоит звездочка `*` это обозначение того в какой ветки мы находимся на данный момент.
+ Но мы хотим работать с нашей `новой веткой`, так что нам понадобится переключиться на другую ветку. Для этого воспользуемся командой `git checkout` и имя нашей ветки. В нашем случае будет `git checkout draft`. И после этого можем опять написать `git branch` и заметить что `*` переместилась на draft
+ Теперь мы например написали какую нибудь инструкцию сохранили и закоммители после чего возращаемся в нашу главную ветку master. Возвращаемся точно таким же образом как переходили в другую ветку `git checkout master`
+ Мы видем что в ветки master ничего из того что мы написали нету, теперь нам нужно объединить информацию из новой ветки в ветку master. Используем для этого команду `git merge`. **Внимательно, объединять только тогда когда мы находимся в главной ветки**
+ Когда мы использовали команду `git merge draft` все что было в draft перенеслось и теперь эта ветка нам большь не нужна и ее можно спокойно удалить при помощи команды `git branch -d draft`.
___

## Удаленные репозитории
1. **Что такое удаленный репозиторий**
+ *Сейчас наш коммит является локальным — существует только в директории .git на нашей файловой системе. Несмотря на то, что сам по себе локальный репозиторий полезен, в большинстве случаев мы хотим поделиться нашей работой или доставить код на сервер, где он будет выполняться*
*Клонирование - это когда вы копируете удаленный репозиторий к себе на локальный ПК.Это то, с чего обычно начинается любой проект. При этом вы переносите себе все файлы и папки проекта, а также всю его историю с момента его создания. Чтобы склонировать проект, сперва, необходимо узнать где он расположен и скопировать ссылку на него. В нашем руководстве мы будем использовать адрес*
https://github.com/tutorialzine/awesome-project.
+ Что бы скопировать чей то проект нужно создать для этого папку и в терминале написать команду `Git clone`.
`git clone https://github.com/tutorialzine/awesome-project new-folder`
2. **Подключение к удаленному репозиторию**
+ Чтобы загрузить что-нибудь в удаленный репозиторий, сначала нужно к нему подключиться,Чтобы связать наш локальный репозиторий с репозиторием на GitHub, выполним следующую команду в терминале
`git remote add origin https://github.com/tutorialzine/awesome-project.git`
3. **Отправка изменений на сервер**
+ Сейчас самое время переслать наш локальный коммит на сервер. Этот процесс происходит каждый раз, когда мы хотим обновить данные в удаленном репозитории.
Команда, предназначенная для этого - push. Она принимает два параметра: имя удаленного репозитория (мы назвали наш origin) и ветку, в которую необходимо внести изменения (master — это ветка по умолчанию для всех репозиториев)
Тоесть `git push origin master`

___