Skip to content
Open
Show file tree
Hide file tree
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
12 changes: 6 additions & 6 deletions 123.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@

#Начало работы
## Начало работы
1. Для начала работы необходимо скачать и устоновить программу git и VS Studio
2. Создать папку на рабочим столе отокрыть её в VS Studio и открыть терминал
3. Для начала работы необходимо проверить правильно ли установлен git, командой (git --
version)
#Коммиты
## Коммиты
1. Для начала необходимо создать файл, назвать его
2. Записать в него информацию
3. сохранить Файл "ctrl + S"
Expand All @@ -13,16 +13,16 @@ version)
#Список коммитов
1. для того чтобы вывести спиок коммитов нужно написать команду git log
2. для упрощенного просмотра git log --oneline
#Ветки
## Ветки
1. когда вводиться команда git init автоматически создаеться ветка Master
2. для создания новой ветки используеться команда git branch название ветки
3. для перехода на новую ветку git checkout название ветки
4. для выведение списка git branch
5. для вливание в текущую ветку git merge название ветки
6. для удаление слитой ветки git branch -d название ветки
#Переход
## Переход
1. Что бы перейти от одного коммита к другому нужно ввести команду git checkout уникальный номер коммита который указан в спимке коммитов
#Работа с удаленным репозиторием
## Работа с удаленным репозиторием
1. Что бы скоприровать на локальный диск внешний репозитрий команда git clone адрес ссылки
2.что бы загрузить с локального на удаленный команда git push
3. Чтобы принять на локальном изменения с удаленого git pul
Expand All @@ -49,7 +49,7 @@ branch_fork* передать изменения в *GitHub* для
рассмотрение владельцу репозитория.


# Инструкция по работе с программой контроля версий Git.
## Инструкция по работе с программой контроля версий Git.



Expand Down
1 change: 1 addition & 0 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Бороткин Роман Геннадьевич
153 changes: 153 additions & 0 deletions Инструкция.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
## Команды Git

- commit

- branch

- checkout

- cherry-pick

- reset

- revert

- rebase

- merge

## Прогулка по Git

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

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

# HEAD

В первую очередь, поговорим о "HEAD". HEAD - это символическое имя текущего выбранного коммита — это, по сути, тот коммит, над которым мы в данный момент работаем.

HEAD всегда указывает на последний коммит из вашего локального дерева. Большинство команд Git, изменяющих рабочее дерево, начнут с изменения HEAD.

Обычно HEAD указывает на имя ветки (например, bugFix). Когда вы делаете коммит, статус ветки bugFix меняется и это изменение видно через HEAD.

Detaching HEAD

Отделение (detaching) HEAD означает лишь присвоение его не ветке, а конкретному коммиту.

# Относительные ссылки

Передвигаться по дереву Git при помощи указания хешей коммитов немного неудобно. В реальной ситуации у вас вряд ли будет красивая визуализация дерева в терминале, так что придётся каждый раз использовать git log, чтобы найти хеш нужного коммита

Более того, хеши в реальном репозитории Git намного более длинные. Например, хеш для коммита, который приведён в предыдущем уровне - fed2da64c0efc5293610bdd892f82a58e8cbc5d8. Не очень просто для произношения =)

Хорошая новость в том, что Git достаточно умён в работе с хешами. Ему нужны лишь первые несколько символов для того, чтобы идентифицировать конкретный коммит. Так что можно написать просто fed2 вместо колбасы выше.

Как мы уже говорили, указание на коммит при помощи его хеша - не самый удобный способ, поэтому Git поддерживает относительные ссылки и они прекрасны!

С относительными ссылками можно начать с какого-либо удобного места (например, с ветки bugFix или от HEAD) и двигаться от него

Относительные ссылки - мощный инструмент, но мы покажем два простых способа использования:

Перемещение на один коммит назад ^

Перемещение на несколько коммитов назад ~<num>

Для начала рассмотрим оператор каретки (^). Когда мы добавляем его к имени ссылки, Git воспринимает это как указание найти родителя указанного коммита.

Так что main^ означает "первый родитель ветки main".

main^^ означает прародитель (родитель родителя) main

Можно также использовать HEAD как относительную ссылку. Мы можем путешествовать во времени при помощи HEAD^

Оператор "~"

Предположим, нужно переместиться на много шагов назад по дереву. Было бы неудобно печатать ^ несколько раз (или несколько десятков раз), так что Git поддерживает также оператор тильда (~).

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

Перемещение ветки (branch forcing)

Одна из наиболее распространённых целей, для которых используются относительные ссылки - это перемещение веток. Можно напрямую прикрепить ветку к коммиту при помощи опции -f. Например, команда:

git branch -f main HEAD~3

## Отмена изменений в Git

Есть много путей для отмены изменений в Git. Так же как и коммит, отмена изменений в Git возможна и на низком уровне (добавление в коммит отдельных файлов и наборов строк), и на высоком (как изменения реально отменяются). Сейчас сфокусируемся на высокоуровневой части.

Есть два основных способа отмены изменений в Git: первый - это git reset, а второй - git revert.

Git Reset

git reset отменяет изменения, перенося ссылку на ветку назад, на более старый коммит. Это своего рода "переписывание истории"; git reset перенесёт ветку назад, как будто некоторых коммитов вовсе и не было.

Git Revert

Reset отлично работает на локальных ветках, в локальных репозиториях. Но этот метод переписывания истории не сработает на удалённых ветках, которые используют другие пользователи.

Чтобы отменить изменения и поделиться отменёнными изменениями с остальными, надо использовать git revert.

# Поперемещаем изменения

Итак, мы уже освоили основы Git: коммиты, ветки, перемещение по дереву изменений. Уже этих знаний достаточно, чтобы овладеть 90% мощью Git-репозиториев и покрыть нужды разработчиков.

А оставшиеся 10% будут очень полезны при сложных workflow (или если ты попал в сложную ситуацию). Теперь речь пойдёт о перемещении изменений — возможности, позволяющей разработчику сказать "Хочу, чтобы эти изменения были вот тут, а вот эти — вон там" и получить точные, правильные результаты, не теряя при этом гибкости разработки.

На первый взгляд запутанно, но на самом деле всё просто.

Git Cherry-pick

Первая из таких команд - это git cherry-pick. Она выглядит вот так:

git cherry-pick <Commit1> <Commit2> <...>

Это очень простой и прямолинейный способ сказать, что ты хочешь копировать несколько коммитов на место, где сейчас находишься (HEAD). Мы обожаем cherry-pick за то, что в нём очень мало магии и его очень просто понять и применять.


# Git Interactive Rebase

Git cherry-pick прекрасен, когда точно известно, какие коммиты нужны (и известны их точные хеши)

Но как быть в случае, когда точно не известно какие коммиты нужны? К счастью, Git позаботился о таких ситуациях! Можно использовать интерактивный rebase для этого - лучший способ отобрать набор коммитов для rebase.

Всё, что нужно для интерактивного rebase - это опция -i

Если добавить эту опцию, Git откроет интерфейс просмотра того, какие коммиты готовы к копированию на цель rebase (target). Также показываются хеши коммитов и комментарии к ним, так что можно легко понять что к чему.

Для "реального" Git, этот интерфейс означает просто открытие файла в редакторе типа vim. Для этой обучалки, я сделал небольшое диалоговое окно, которое по сути делает то же, что и редактор.


После открытия окна интерактивного rebase есть три варианта для каждого коммита:

Можно сменить положение коммита по порядку, переставив строчку с ним в редакторе (у нас в окошке строку с коммитом можно перенести просто мышкой).

Можно "выкинуть" коммит из ребейза. Для этого есть pick - переключение его означает, что нужно выкинуть коммит.

Наконец, можно соединить коммиты. В этом уровне игры у нас не реализована эта возможность, но, вкратце, при помощи этой функции можно объединять изменения двух коммитов.

## Работа с удаленными репозиториями
Копировать внешний репозиторий на свой ПК можно командой git clone.

Команда **git clone** составная: она не только загружает все изменения, но и пытается слить все ветки на локальном компьютере и в удаленном репозитории.

**git pull** - эта команда позволяет скачать все из текущего репозитория и автоматически сделать merge с нашей версией.

**git push** - 'та команда позволяет отправить нашу версию репозитория на внешний репозиторий. ТРЕБУЕТ АВТОРИЗАЦИИ на внешнем репозитории.

### Как настроить совместную работу
1. Создать аккаунт на GitHub.com
2. Создать локальный репозиторий
3. “Подружить” ваш локальный и удалённый репозитории. *GitHub при создании нового репозитория подскажет, как это можно сделать*
4. Отправить (push) ваш локальный репозиторий в удалённый (на GitHub), при этом, возможно, 

вам нужно будет авторизоваться на удалённом репозитории
5. Провести изменения "с другого компьютера"
6. Выкачать (pull) актуальное состояние из удалённого репозитория

### Как сделать pull request
* Делаем **fork** (ответвление) репозитория
* Делаем git clone **своей** версии репозитория
* Создаем новую ветку и в нее вносим свои изменения
* фиксируем изменения (делаем коммиты)
* Отправляем свою версию в свой GitHub
* На сайте GitHub нажимаем кнопку **pull request**