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
269 changes: 269 additions & 0 deletions Инструкция_по_GIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
# Инструкция по использованию GIT

## Начало работы
Для начала работы необходимо установить две программы:
1. GIT: <https://git-scm.com/download/>
2. Virtual Studio Code: <https://code.visualstudio.com/download>

## Настройка **VSC:**
![Логотип VSC](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Visual_Studio_Code_1.35_icon.svg/180px-Visual_Studio_Code_1.35_icon.svg.png)
1. Запустить программу в папке, где планируется вести контроль версий либо выбрать директорию:

*Файл-Открыть папку...*;

2. Запустить терминал: *Вид-Терминал*

## Работа в **GIT**:
![Логотип GIT](https://git-scm.com/images/logo@2x.png)
1. Для работы в **GIT** необходимо единожды ввести своё имя и e-mail, которое в дальнейшем будет использоваться программой:

git config --global user.name «Ваше имя английскими буквами»
• git config --global user.email ваша почта@example.com

Ввод комманд делается в терминале **VSC**.

2. Узнаём версию программы GIT (далее GIT):

**git --version**

3. Проводим иннициализацию **GIT**:

**git init**

4. Узнаём в каком репозитории находимся и есть ли сохранения commits:

**git status**

5. Добавляем файлы, версии у которых хотим контролировать **GIT**:

**git add fileName.расш**
**git add * ** - добавление всех файлов и папок в родительском и потомковых папках

6. Сохраняемизменения в файле, добавленном командой **add**
**git commit -m "_комментарий_"**

7. При дальнейших изменениях в файлах, версии которых мы хотим контролировать необходимо повторять **п.5,6.**.


8. Дополнительные команды, необходимые для работы с GIT:

**git log** - выводит журнал изменений с указанием имён всех сохранений изменений
**git log --graph** - выводит журнал изменений с графическим изображением веток

**cd _имя папки_** - заходит в папку, расположенную в текущей
**cd ..** - подниается на одну ступень вверх по каталогу


**git checkout** (*первые четыре символа имени нужного сохранения изменений*) - загружает нужное нам сохранение

**git diff** - показывает разницу между текущим состоянием файла и тем, которое в сохранении изменений.
**git diff nameBranch1..nameBranch2** - показывает разницу между файлами в разных ветках

## Дополнительные команды в **GIT**

## Конфигурация
**git config --global user.name "[name]"**

— установить имя, которое будет прикрепляться к коммиту.


**git config --global user.email "[email address]"**

— установить email, который будет прикрепляться к коммиту.

**git config --global color.ui auto**

— включить полезную подсветку командной строки.

**git config --global push.default current**

— обновлять удаленную ветку с таким же именем, что и локальная, при пуше изменений (если не указано иного).

**git config --global core.editor [editor]** — установить редактор для редактирования сообщений коммита.

**git config --global diff.tool [tool]** — установить программу для разрешения конфликтов при слиянии.

## Создание репозиториев
**git init [project-name]** — создать новый локальный репозиторий с заданным именем.

**git clone [url]** — загрузить проект и его полную историю изменений.

## Работа с изменениями
**git status** — полный список изменений файлов, ожидающих коммита.

**git status -s** — краткий вид изменений.

**git diff** — показать изменения в файлах, которые еще не были добавлены в индекс коммита (staged).

**git add [file]** — сделать указанный файл готовым для коммита.

**git add .** — сделать все измененные файлы готовыми для коммита.

**git add '*.txt'** — добавить только файлы, соответствующие указанному выражению.

**git add --patch filename** — позволяет выбрать какие изменения из файла добавятся в коммит.

**git diff --staged** — показать что было добавленно в индекс с помощью git add, но еще не было закоммиченно.

**git diff HEAD** — показать что изменилось с последнего коммита.

**git diff HEAD^** — показать что изменилось с предпоследнего коммита.

**git diff [branch]** — сравнить текущую ветку с заданной.

**git difftool -d** — то же самое, что и diff, но показывает изменения в заданной difftool.

**git difftool -d master..** — показать изменения, сделанные в текущей ветке.

**git diff --stat** — показать статистику какие файлы были изменены и как.

**git reset [file]** — убрать файлы из индекса коммита (изменения не теряются).

**git commit** — записать изменения в репозиторий. для написания сообщения откроется назначенный редактор.

**git commit -m "[descriptive message]"** — записать изменения с заданным сообщением.

**git commit --amend** — добавить изменения к последнему коммиту.


## Работа с ветками

**git branch** — список всех локальных веток в текущей директории.

**git branch [branch-name]** — создать новую ветку.

**git checkout [branch-name]** — переключиться на указанную ветку и обновить рабочую директорию.

**git checkout -b <name> <remote>/<branch>** — переключиться на удаленную ветку.

**git checkout [filename]** — вернуть файл в первоначальное состояние если он еще не был добавлен в индекс коммита.

**git merge [branch]** — соединить изменения в текущей ветке с изменениями из заданной.

**git merge --no-ff [branch]** — соединить ветки без режима “fast forwarding”.

**git branch -a** — посмотреть полный список локальных и удаленных веток.

**git branch -d [branch]** — удалить заданную ветку.

**git branch -D [branch]** — принудительно удалить заданную ветку, игнорируя ошибки.

**git branch -m <oldname> <newname>** — переименовать ветку.


##Работа с файлами

**git rm [file]** — удалить файл из рабочей директории и добавить в индекс информацию об удалении.

**git rm --cached [file]** — удалить файл из репозитория, но сохранить его локально.

**git mv [file-original] [file-renamed]** — изменить имя файла и добавить в индекс коммита.

Отслеживание файлов
**.gitignore** — текстовый файл, в котором задаются правила для исключения файлов из репозитория. Например:

*.log
build/
temp-*
git ls-files --other --ignored --exclude-standard — список всех игнорируемых файлов.


## Сохранение фрагментов

**git stash** — положить во временное хранилище все отслеживаемые файлы.

**git stash pop** — восстановить последние файлы, положенные во временное хранилище.

**git stash list** — список всех сохраненных изменений во временном хранилище.

**git stash drop** — удалить последние файлы, положенные во временное хранилище.


## Просмотр истории

**git log** — список изменения текущей ветки.

**git log --follow [file]** — список изменения текущего файла, включая переименования.

**git log --pretty=format:"%h %s" --graph** — изменение вида отображения истории изменений.

**git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit** — посмотреть над чем работал заданный пользователь последнюю неделю.

**git log --no-merges master..** — посмотреть историю изменений только для текущей ветки.

**git diff [file-branch]..[second-branch]** — посмотреть различия между двумя заданными ветками.

**git show [commit]** — показать метадату и изменения в заданном коммите.

**git show [branch]:[file]** — посмотреть на файл в другой ветке, не переключаясь на неё.


## Отмена коммитов

**git reset** — убрать изменения из индекса коммита, сами изменения останутся.

**git reset [commit/tag]** — отменить все коммиты после указанного коммита, изменения будут сохранены локально.

**git reset --hard [commit]** — принудительно вернутся к указанному коммиту, не сохраняя историю и изменения.


## Синхронизация изменений

**git fetch [bookmark]** — загрузить всю историю с заданного удаленного репозитория.

**git merge [bookmark]/[branch]** — слить изменения локальной ветки и заданной удаленной.

**git push** — запушить текущую ветку в удаленную ветку.

**git push [remote] [branch]** — запушить ветку в указанный репозиторий и удаленную ветку.

**git push [bookmark] :[branch]** — в удаленном репозитории удалить заданную ветку.

**git push -u origin master** — если удаленная ветка не установлена как отслеживаемая, то сделать ее такой.

**git pull** — загрузить историю и изменения удаленной ветки и произвести слияние с текущей веткой.

**git pull [remote][branch]** — указать конкретную удаленную ветку для слияния.

**git remote** — посмотреть список доступных удаленных репозиториев.

**git remote -v** — посмотреть детальный список доступных удаленных репозиториев.

**git remote add [remote][url]** — добавить новый удаленный репозиторий.

#Работа с удалённым репозиторием
##Загрузка репозитория из Github в Git
1. создать аккаунт на Github.com
2. Создать локальный репозиторий
3. "Подружить" ваш локальный и удалённые репозитории. Github при создании нового репозитория подскажет, как это можно сделать.
4. Отправить (push) ваш локальный репозиторий в удалённый (на Github). При этом вам, возможно, нужно будет авторизоваться на удалённом репозитории.
5. Провести изменения "с другого компьютера".
6. Выкачать (pull) актуальное состаяние из удалённого репозитория.

##Загрузка из Git (компьютера) в Github (интернет)
1. Создаём на компьютере репозиторий.
2. Создаём аккаунт на Github в интернете.
3. В Github в правом верхнем углу нажимаем "+" -"New repository" - даём имя - тип "Public" - "Creat repository"
4. Есть три варианта создания репозитория:
- Создать новый репозиторий через терминал;
- Привязать существующий репозиторий;
- Импортировать код из другого репозитория.
5. Необходимо ввести комманды, которые предлагает Github для выбранного варианта, в Git. В нашем случае:
-git remote add **origin** _(название репозитория)_ http://...
-git branch -M **main** _(указывает имя главной ветки)_
-git push -u origin main _(отправка)_
6. При первой загрузке необходимо авторизироваться.

##Итерации
1. Вносим изменения в репозиторий в Git на компьютере.
2. Командой **git push" отправляем изменения в Github интернет.
3. Вносим изменения в Github (либо в нём самом редактируем, либо с другого компьютера)
4. Командой **git pull** скачиваем в Git из Github изменения с одновременным слиянием веток.

## Как сделать **pull request**
1.Делаем **fork** стороннего репозитория (создаётся копия репозитория на нашем аккаунте)
2. Делаем **clone СВОЕЙ** версии репозитория (скачиваем в Git на компьютере из Github своего аккаунта)
3. Создаём новую ветку и в **НЕЁ** вносим свои изменения
4.Фиксируем изменения, делая коммиты.
5. Отправляем свою версию на свой аккаунт Github
6. На сайте Github нажимаем появившуюся кнопку **pull recuest"