Compare commits

...

19 Commits

Author SHA1 Message Date
50f9049c98 gpg key expire 2026-01-19 17:24:30 +03:00
f0d89afee8 import public keys from card 2026-01-16 23:25:47 +03:00
d91bdd1fc0 update gitconfig example 2026-01-16 21:48:36 +03:00
6c10f518ce vscode editor for rebase 2025-10-31 10:20:25 +03:00
5e31fe1262 Merge branch 'gpg' 2025-02-16 03:28:26 +03:00
fd6b41cf76 gpg sign 2025-02-16 03:26:29 +03:00
43bbdb0f42 automatic fetch prune 2025-02-10 15:14:39 +03:00
f7c70c43a0 SSH sign added 2025-01-20 22:26:22 +03:00
5e6547886d ssh test update 2024-10-21 04:16:33 +03:00
acd3950b01 restrict image sizes for vscode 2024-10-20 19:14:08 +03:00
2dfdff321a broken link fix 2024-10-20 18:50:42 +03:00
efb02b9abc move files under src folder 2024-10-20 18:48:59 +03:00
7496ec5af3 spoilers for VSCode images 2024-10-20 18:29:31 +03:00
76d45aa993 small changes 2024-10-20 03:09:36 +03:00
316432edf8 ssh man update 2024-10-20 02:34:53 +03:00
99e55df488 VSCode install update 2024-10-20 02:07:05 +03:00
e5660688af Move wiki to the main repo 2024-10-19 21:56:52 +03:00
7ca0036176 remove wiki related md files 2024-10-19 21:39:33 +03:00
233236d140 wiki files added 2024-10-19 20:00:40 +03:00
57 changed files with 843 additions and 2 deletions

View File

@@ -1,5 +1,13 @@
## Полезные мануалы
Вся информация находится в Wiki данного репозитория.
[Manuals Wiki Home](../../../wiki/)
* [Установка GIT в windows](src/GIT-install-win.md)
* [Конфигурация GIT](src/GIT-config.md)
* [SSH авторизация по ключам](src/SSH-key-auth-win.md)
* [SSH подпись](src/GIT-SSH-sign.md)
* [GPG подпись](src/GIT-GPG-sign.md)
* [Установка TortoiseGit](src/TortoiseGit.md)
* [GIT в Bash](src/GIT-Bash.md)
* [VS Code](src/VS-Code.md)
* [Windows Terminal](src/Windows-Terminal.md)
* [WSL2](src/WSL.md)

15
src/GIT-Bash.md Normal file
View File

@@ -0,0 +1,15 @@
# Git в Bash
Для работы с Git часто будет требоваться командная строка. Хотя тут может быть большое количество личных предпочтений (PowerShell, zsh, fish), но пожалуй самый распостраненный случай когда пользователь будет использовать Bash. Такая возможность есть и в Windows (Git-bash) и в Linux, а также в различных вариантах embedded Linux устройств.
Потому хочется так настроить Bash чтобы им было удобно пользоваться.
[В официальном репозитории Git](https://github.com/git/git/tree/master/contrib/completion) уже есть все необходимо для этого.
- git-completion.bash - позволяет по нажатию `<TAB>` делать автодополнение комманд Git.
- git-prompt.sh - позволяет отображать полезные подсказки в promt терминала.
Если кто-то захочет разобраться во всех тонкостях настройки Bash, то он это сделает по официальной документации, и ничто не сможет его остановить. Я же предложу простой путь. Просто скачать и установить мою конфигурацию.
Для этого скачиваем [архив конфигурации](../../../../raw/branch/main/src/home-config/home-config.zip) и распаковываем в домашнюю папку пользователя с заменой. Не забываем перелогиниться чтобы изменения вступили в силу.
Теперь Bash будет автоматически распознавать что вы находитесь внутри репозитория Git и делать подсказки по работе.

216
src/GIT-GPG-sign.md Normal file
View File

@@ -0,0 +1,216 @@
# GPG подпись
<!-- https://www.youtube.com/watch?v=2CwsoGw2coc -->
<!-- https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key -->
GPG ключи по сравнению с SSH ключами имеют более развитый функционал.
- настройка специализации ключа (шифрование, подпись, авторизация, создание подключей);
- отзыв ранее выпущенных ключей;
- настройка срока действия ключей с возможностью продления в будущем;
- привязка ключей к имени пользователя и почте;
- возможность загрузки публичных ключей на сервера ключей;
- возможность хранения секретных ключей на аппаратном ключе который поддерживает стандарт OpenPGP Card (например Yubikey)
Под Windows утилита gpg идет вместе с git. Так что можно работать сразу после установки git.
Все свои файлы gpg хранит в `~/.gnupg/`
Полезно добавить в конфиг:
```
cat << --- >> ~/.gnupg/gpg.conf
keyid-format LONG
with-fingerprint
no-greeting
armor
---
```
Полезные команды:
```
gpg -k --keyid-format=long # Посмотреть публичные ключи
gpg -K --keyid-format=long # Посмотреть приватные ключи
gpg --full-generate-key # Генерация пары ключей
gpg -a --export <key-id> # Экспорт публичного ключа
gpg -a --export-secret-keys <key-id> # Экспорт секретного ключа
gpg --import <file> # Импорт ключа
gpg --delete-key <key-id> # Удаление публичного ключа
gpg --delete-secrete-key <key-id> # Удаление секретного ключа
git config --global user.signingkey <key-id>
```
Обозначения типов ключей:
```
sec - secret primary key (секретный основной ключ)
pub - public primary key (публичный основной ключ)
ssb - secret sub-key (секретный сабключ)
sub - public sub-key (публичный сабключ)
> - ключ есть на карте
# - нет секретного ключа, только заглушка для сабключа
```
## Генерация ключей
Создаем основной (primary) ключ:
```
gpg --expert --full-generate-key
```
Выбираем один из вариантов:
```
RSA (sign only) # создание только основного ключа c правами [SC]
RSA (set your own capabilities) # создание только основного ключа c настраиваемыми правами
```
Этот ключ нужен для генерации других сабключей.
## Генерация сабключей
Для генерации сабключей заходим в консоль gpg:
```
gpg --expert --edit-key [id]
> addkey
...
> save
```
`[id]` - здесь и далее в качестве id можно использовать id ключа, имя или почту пользователя.
`?` - список все комманд
`addkey` - добавить новый сабключ
`change-usage` - поменять флаги usage
`save` - не забываем сохранить результаты перед выходом
## Экспорт ключей
Прежде удалять мастер ключ или переносить сабключи на карту, необходимо сделать бекап (экспорт) всей нашей работы.
```
gpg -a --export-secret-key [id] > master.key # Экспорт мастер ключа (вместе с сабключами)
gpg -a --export-secret-subkeys [id] > subkeys.key # Экспорт сабключей (не обязательно)
gpg -a --export [id] > public.key # Экспорт общего публичного ключа
```
## Сохранение на аппаратный ключ
<!-- https://fido.ftsafe.com/openpgp/ -->
<!-- https://rgoulter.com/blog/posts/programming/2022-06-10-a-visual-explanation-of-gpg-subkeys.html -->
```
gpg --card-status # посмотреть информацию по карте
gpg --edit-key [id] # входим в режим редактирования
> key 1 # выбираем первый сабключ
> keytocard # переносим его на карту
> key 1 # снимаем старый выбор
> key 2 # выбираем следующий сабключ
> keytocard # переносим его на карту
> key 2 # снимаем старый выбор
> key 3 # выбираем следующий сабключ
> keytocard # переносим его на карту
> key 3 # снимаем старый выбор
> save # сохраняем (локальные ключи сотрутся!)
```
## Удаление секретных ключей
Удаляем секретные ключи:
```
gpg --delete-secret-keys [master-key-id]
```
Для того чтобы gpg понял что секретные ключи находятся на карте выполняем:
```
gpg --card-status
```
Для использования карты на новом компьютере достаточно импортировать public ключ и запустить `gpg --card-status`.
## Загрузка public ключа на сервер ключей
Существует огромное кол-во серверов ключей, для примера будем использовать:
https://keys.openpgp.org/
Ключи лучше загружать через web-интерфес чтобы получить ссылку для верификации почты.
После того как public ключ загружен на сервер, можно добавить URL ключа в настройки карты. Тогда будет возможно настраивать новый компьютер совсем просто:
```
gpg --card-edit # Заходим в настройки карты
> fetch # Скачиваем public ключ
> quit # Выходим
gpg --edit-key [id] # Заходим в редактирование
> trust # Редактируем trust (по умолчанию она сброшена в "unknown")
> 5 # Савим "ultimate" (Это наш собственный ключ, доверяем.)
> save # Сохраняем
```
И сразу можно подписывать коммиты :)
## Настройка подписи коммитов в git
Подписать последний коммит `git commit --amend --no-edit -S`
Также не лишним будет добавить удобные элиасы в .ginconfig:
```
sign = commit --amend --no-edit -S
unsign = commit --amend --no-edit
signoff = commit --amend --no-edit -s
```
## Настройка чистой системы для подписи аппаратным ключом
Если есть аппаратный ключ и нужно настроить подпись коммитов на чистой системе,
то можно просто импортировать публичные ключи с карты.
Предполагается что `.gitconfig` настроен правильно.
Предварительно можно очистить все настройки `gpg` удалив папку `~/.gpgconf`
Если удалить не получается то надо убить процессы:
```
gpgconf --kill all
```
Импортируем ключи с карты:
```
gpg --card-edit
> fetch
> quit
```
Опционально устанавливаем ключу максимальный уровень доверия:
```
gpg --edit-key [id]
> trust
5
> quit
```
## Продление ключей
Короткий вариант продлить сразу все ключи:
```
gpg --import ~/master.key # временно импортируем мастер ключ
gpg --quick-set-expire [master-key-fingerprint] 1y '*' # продляем на 1 год с текущей даты
gpg --quick-set-expire [master-key-fingerprint] 2025-12-31 '*' # или указываем конкретную дату
gpg --delete-secret-keys [master-key-id] # удаляем секретные ключи
gpg --keyserver keys.openpgp.org --send-keys [master-key-id] # обновляем на сервере
gpg -a --export [master-key-id] > public.key # экспорт публичных ключей
# обновляем public.key на всех серверах git
```
Или вручную по одному:
```
gpg --import ~/master.key # временно импортируем мастер ключ
gpg --edit-key [master-key-id]
> key 1 # выбираем первый сабключ
> expire # редактируем срок действия
> 1y # 1 год например
> key 1 # снимаем старый выбор
> key 2 # выбираем следующий сабключ
> expire # редактируем срок действия
> 1y # 1 год например
> key 2 # снимаем старый выбор
> key 3 # выбираем следующий сабключ
> expire # редактируем срок действия
> 1y # 1 год например
> key 3 # снимаем старый выбор
> save # сохраняем (локальные ключи сотрутся!)
gpg --delete-secret-keys [master-key-id] # удаляем секретные ключи
gpg --keyserver keys.openpgp.org --send-keys [master-key-id] # обновляем на сервере
gpg -a --export [master-key-id] > public.key # экспорт публичных ключей
# обновляем public.key на всех серверах git
```
Обновлять приватные ключи на аппаратных ключах (Yubikey) не нужно, т.к. там храниться только криптографическая часть, без метаданных.

56
src/GIT-SSH-sign.md Normal file
View File

@@ -0,0 +1,56 @@
# SSH подпись
Как мы знаем в GIT можно указать любое имя пользователя и почтовый адрес.
Для достоверной идентификации автора существует возможность цифровой подписи коммитов.
Подписывать коммиты будем тем же самым ключом SSH который мы использовали ранее для работы с удаленными репозиториями.
<!-- https://dev.to/ccoveille/git-the-complete-guide-to-sign-your-commits-with-an-ssh-key-35bg -->
<!-- https://developer.1password.com/docs/ssh/git-commit-signing/ -->
Чтобы верифицировать подписи локально, нужно создать файл с доверенными ключами...
```
echo "$(git config --get user.name) $(cat ~/.ssh/id_rsa.pub)" >> ~/.ssh/allowed_signers
```
Добавляем соответствующие настройки в GIT:
```
git config --global gpg.format ssh # Включаем SSH для подписи
git config --global user.signingkey "~/.ssh/id_rsa.pub" # Добавляем открытый ключ
git config --global gpg.ssh.allowedSignersFile "~/.ssh/allowed_signers" # Добавляем файл доверенных подписей
git config --global commit.gpgsign true # Автоподпись для коммитов
git config --global tag.gpgsign true # Автоподпись для тэгов
```
Таким образом мой файл .gitconfig теперь выглядит так:
```
[user]
name = ARNik
email = r.anikeev@gmail.com
signingkey = ~/.ssh/id_rsa.pub
[color]
ui = true
[core]
quotepath = off # отображение русских имен файлов
[alias]
ll = log --oneline --graph --decorate --all
st = status --short
co = checkout
br = branch
ct = commit
lg = log --graph --all\
--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
[gpg]
format = ssh
[gpg "ssh"]
allowedSignersFile = ~/.ssh/allowed_signers
[commit]
gpgsign = true
[tag]
gpgsign = true
```

69
src/GIT-config.md Normal file
View File

@@ -0,0 +1,69 @@
# Конфигурация GIT
Сразу же после установки лучше всего произвести первоначальную настройку Git.
Git имеет три файла конфигурации:
- системный (общий на всю систему, для всех пользователей) */etc/gitconfig*
- глобальный (для конкретного пользователя) *~/.gitconfig*
- локальный (для конкретного репозитория) *.git/config*
Соответственно для настроек *git config* используется с опциями:
- git config --system
- git cofnig --global
- git config (--local)
Можно редактировать файлы ручками, либо использовать встроенную утилиту *git config*. В общем виде формат вызова выглядит так:
```
git config секция.параметр значение
```
Делаем базовые настройки:
```
git config --global user.name "My name" # Имя пользователя по умолчанию для всех коммитов
git config --global user.email my@mail.com # Почта пользователя по умолчанию для всех коммитов
git config --global color.ui true # Включаем цветной вывод в командах git
git config --global core.quotepath off # Для правильного отображение русских имен файлов
git config --global core.editor "code --wait" # Для использования vscode редактора для rebase
git config --global fetch.prune true # Автоматическая очистка remote веток удаленных на сервере
```
Дополнительно можно настроить удобные элиасы для часто используемых команд.
---
Вот моя конфигурация ~/.gitconfig
```
[user]
name = ARNik
email = arnik@arnik.ru
signingkey = AEBB0598F42201E3
[color]
ui = true
[core]
quotepath = off # отображение русских имен файлов
editor = code --wait # vscode редактор для rebase
[alias]
ll = log --oneline --graph --decorate --all
st = status --short
co = checkout
br = branch
ct = commit
sign = commit --amend --no-edit -S
unsign = commit --amend --no-edit
signoff = commit --amend --no-edit -s
pr = remote prune origin
lg = log --graph --all\
--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset %G?'
# to pevent "fatal: detected dubious ownership in repository"
[safe]
directory = *
[gpg "ssh"]
allowedSignersFile = ~/.ssh/allowed_signers
```
---
Для изучения Git и в качестве справки хочу порекомендовать:
- [Git: курс](https://www.youtube.com/playlist?list=PLDyvV36pndZFHXjXuwA_NywNrVQO0aQqb)
- [Git: разное](https://www.youtube.com/playlist?list=PLDyvV36pndZEB7kWWocU4QSn-G78LoaEE)

106
src/GIT-install-win.md Normal file
View File

@@ -0,0 +1,106 @@
# Установка GIT в windows.
Официальный сайт Git: https://git-scm.com/
Скачиваем и устанавливаем...
Путь установки оставим по умолчанию.
<p align="center"> <img src="images/Git_Install1.png"></p>
---
Тут вопрос удобства. Если не знаем что выбрать, то можно оставить по умолчанию.
<p align="center"> <img src="images/Git_Install2.png"></p>
---
Далее
<p align="center"> <img src="images/Git_Install3.png"></p>
---
Git поддерживает несколько редакторов. Этот редактор будет появляться каждый раз когда у Git появятся к вам вопросы. Лучше конечно использовать консольный редактор, т.к. не всегда получится использовать GUI редактор из консоли.
Для начинающих хорошо подойдет "Nano"
<p align="center"> <img src="images/Git_Install4.png"></p>
---
Раньше ветка по умолчанию называлась *master*. Теперь же Git стал толерантным и предлагает изменить ее на *main*. Я выбираю *main* просто потому что там на 2 буквы меньше чем в *master* :)
<p align="center"> <img src="images/Git_Install5.png"></p>
---
**Важная настройка!**
Выбираем средний пункт чтобы другой софт мог использовать Git тоже.
<p align="center"> <img src="images/Git_Install6.png"></p>
---
Используем встроенный в Git OpenSSH.
<p align="center"> <img src="images/Git_Install7.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install8.png"></p>
---
Git может автоматически менять окончания строк (Windows <-> Linux) при чекаутах и коммитах. Предпочитаю отключить эту опцию и не менять эти файлы. Если понадобится в будущем, то можно будет включить для определенных репозиториев.
Иначе могут быть странные поведения когда клонированный в виртуальную WSL машину репозиторий при просмотре через windows выклядит как измененный.
<p align="center"> <img src="images/Git_Install9.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install10.png"></p>
---
Поведение команды pull по умолчанию. Поскольку pull это две команды в одной (fetch и merge), то существует риск получить нежелательные действия в локальной ветке типа merge или rebase. Предпочитаю такие вещи контролировать самостоятельно, потому отключаю все кроме простой "перемотки".
<p align="center"> <img src="images/Git_Install11.png"></p>
---
Менеджер "секретов" для двухфакторной авторизации через https.
Не пользуюсь. Т.к. работаю через ssh.
<p align="center"> <img src="images/Git_Install12.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install13.png"></p>
---
Экспериментальные фичи. Будем тестировать позже, когда доделают.
<p align="center"> <img src="images/Git_Install14.png"></p>
---
Готово!
<p align="center"> <img src="images/Git_Install15.png"></p>
Перезагружаемся.

142
src/SSH-key-auth-win.md Normal file
View File

@@ -0,0 +1,142 @@
# SSH авторизация по ключам
В интернете можно найти множество иснтрукций о том как настроить *ssh авторизацию по ключам* для использования с репозиториями, удаленным администрированием, различными программами контроля версий и т.д.
Встречаются даже такие извращения как использование Putty агента в связке с Tortoise Git на основе Putty сессий. Варианты с генерацией ключа с помощью Putty, конвертирование из одного формата в другой и подсовывание в Tortoise Git я, изрядно измучившись, тоже выкинул. Даже на самом GitHub лежит мануал с использованием агента ключей.
Перелопатив кучу мануалов я решил что мне нужен универсальный способ. И похоже мне удалось такой найти.
Итак, мне нужно чтобы работало:
* из любых терминалов (cmd, PowerShell, Git-bash, Git-cmd)
* с любыми shell (cmd, sh, bash, zsh т.д.)
* c любыми встроенными в терминалы или shell утилитами (ssh, scp, sftp и т.д.)
* со всеми репозиториями (GitHub, GitLab, Gitea)
* с различными GUI (TortoiseGit, VSCode, Altium Designer и пр.)
* без использования агентов ключей (ssh-agent или Putty)
* одинаково настраивалось как в Windows, так и в Linux.
* на одну машину должен приходиться один ключ, чтобы не настраивать отдельно для каждой утилиты/приложения/IDE
* один ключ для работы с репозиториями и доступом к удаленным серверам
Как оказалось чтобы все это реализовать нужно было не гуглить мануалы, а читать **man ssh**.
---
Для работы с SSH в windows будем использовать OpenSSH. Ставить отдельно его не надо т.к. OpenSSH идет в комплекте с Git. Ставим его в первую очередь.
Если же Git уже установлен, то идем дальше...
---
### 1. Открываем терминал и создаем ключ нашей локальной системы.
```
$ ssh-keygen -t rsa
```
На все вопросы нажимаем "Enter", отказываясь от ключевой фразы.
Как результат в домашней папке пользователя будет создана ключевая пара:
- .ssh/id_rsa (закрытый ключ)
- .ssh/id_rsa.pub (открытый ключ)
Закрытый ключ мы не трогаем. Он секретный и остается только на этой машние.
Открытый ключ мы используем для помещения в репозитории и удаленные сервера.
---
### 2. Добавляем ключ в ~/.ssh/config
Поскольку мы не будем пользоваться никакими агентами ключей, то для пользования репозиториями, нужно прописать данный ключ в ~/.ssh/config в качестве ипользуемого по умолчанию глобально.
Если этого файла нет, то создаем его и добавляем в него строчку:
```
IdentityFile ~/.ssh/id_rsa
```
~/.ssh/config вообще очень полезный файл. Рекомендую почитать что он еще умеет. Например туда можно прописать хосты типа:
```
Host site
HostName www.my-site.dyndns.org
Port 2222
User user
```
Тогда вместо такого:
```
$ ssh user@www.my-site.dyndns.org -p 2222
```
Можно писать так:
```
$ ssh site
```
---
### 3. Добавляем ключ на удаленные сервера Linux
Если ключ нужен только для работы с репозиториями, то переходим к следующему пункту.
Если есть программа ssh-copy-id (в Linux и Git-bash она есть), прописываем публичный ключ на удаленный сервер.
```
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
```
Eсли ssh-copy-id нет, то можно сделать это вручную.
Вот последовательность действий:
- логинимся на удаленной машине
- добавляем свой ключ в файл authorized_keys
```
remote$ echo "содержимое файла открытого ключа" >> ~/.ssh/authorized_keys
```
- делаем правильные права (если файл только что был создан)
```
remote$ chmod 600 ~/.ssh/authorized_keys
```
- проверяем, что все работает, запускаем на локальном компьютере.
```
$ ssh user@server_ip
```
---
### 4. Добавляем ключ в репозитории
Для работы с репозиториями необходимо прописать туда публичный ключ.
Для этого копируем содержимое файла ~/.ssh/id_rsa.pub во все необходимые репозитории.
- GitHub: Settings -> SSH and GPG keys -> Nes SSH key
- GitLab: Preferences -> SSH Keys -> Add key
- Gitea: Settings -> SSH / GPG keys -> Add Key
В качестве имени ключа удобно указывать пользователя и имя машины.
**user@host**
Для тестирования авторизации можно запустить:
```
$ ssh -T git@github.com
```
Аналогично и для других репозиториев:
```
$ ssh -T git@repo_url
```
Что проверяю я:
```
$ ssh -T git@git.arnik.ru
$ ssh -T git@gitea.srv.mf-t.ru -p 1022
$ ssh -T git@gitlab.srv.mf-t.ru -p 2222
```
---
### 5. Настройка TortoiseGit
Чтобы TortiseGit переключился на использование OpenSSH надо в настройках
```
Settings -> Network -> SSH client
```
поменять клиент на
```
C:\Program Files\Git\usr\bin\ssh.exe
```
---
### PS (Linux)
Если все настроено но все равно спрашивает пароль, то надо проверить права:
```
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
```
Удачной работы!

107
src/TortoiseGit.md Normal file
View File

@@ -0,0 +1,107 @@
# Установка TortoiseGIT в windows.
Перед тем как устанавливать TortoiseGit надо [установить Git for windows](GIT-install-win.md).
Скачиваем с официального сайта: https://tortoisegit.org/download/
Запускаем установку.
<p align="center"> <img src="images/TortoiseGit_install_01.png"></p>
---
Далее.
<p align="center"> <img src="images/TortoiseGit_install_02.png"></p>
---
Проверяем что будут установлены все компоненты.
<p align="center"> <img src="images/TortoiseGit_install_03.png"></p>
---
Запускаем процесс установки.
<p align="center"> <img src="images/TortoiseGit_install_04.png"></p>
---
<p align="center"> <img src="images/TortoiseGit_install_05.png"></p>
---
Убираем галочку "Мастера настроек". Все настройки будем делать явным образом в Git и в TortoiseGit. Завершаем установку.
<p align="center"> <img src="images/TortoiseGit_install_06.png"></p>
---
После установки TortoiseGit соответствующие пункты появятся в контекстном меню проводника. Открываем настройки.
<p align="center"> <img src="images/TortoiseGit_install_07.png"></p>
---
В настройках "Context Menu" рекомендую дополнительно включить:
- Diff
- Show log
- Revert
<p align="center"> <img src="images/TortoiseGit_install_08.png"></p>
---
Чтобы значки отображались на сетевых и других дисках необходимо включить соответствующие галочики в:
```
Settings -> Icon Overlays
```
<p align="center"> <img src="images/TortoiseGit_install_09.png"></p>
---
Меняем набор иконок на "Illustration"
(самый красивый)
```
Settings -> Icon Overlays -> Icon Set
```
<p align="center"> <img src="images/TortoiseGit_install_10.png"></p>
---
Чтобы TortiseGit переключился на использование OpenSSH надо в настройках
```
Settings -> Network -> SSH client
```
поменять клиент на
```
C:\Program Files\Git\usr\bin\ssh.exe
```
<p align="center"> <img src="images/TortoiseGit_install_11.png"></p>
---
Для того чтобы удобно просматривать изменения рекомендую установить [WinMerge](https://winmerge.org/).
После установки чтобы TortoiseGit использовал WinMerge по умолчанию необходимо указать его в настройках.
```
Settings -> Diff Viewer
```
переключаем на External и вводим путь к установленному WinMerge c ключами:
```
C:\Program Files (x86)\WinMerge\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine
```
<p align="center"> <img src="images/TortoiseGit_install_12.png"></p>
```
Settings -> Diff Viewer -> Merge Tool
```
также переключаем на External и вводим путь к установленному WinMerge c ключами:
```
C:\Program Files (x86)\WinMerge\WinMergeU.exe /e /ub /fm /wl /wr /dl %tname /dm %bname /dr %yname %theirs %base %mine /o %merged
```
<p align="center"> <img src="images/TortoiseGit_install_13.png"></p>
Не забываем перезагрузить компьютер чтобы все изменения вступили в силу.

47
src/VS-Code.md Normal file
View File

@@ -0,0 +1,47 @@
# Visual Studio Code
Очень популярный редактор для разработчиков. Достаточно простой с кучей дополнительных расширений которые можно установить из маркета.
В отличие от Eclipse быстрый, минималистичный и намного проще в настройке.
<details><summary>Отладка:</summary>
<p align="center"> <img src="images/vscode_demo.gif" width="900"></p>
</details>
<details><summary>Работа с GIT:</summary>
<p align="center"> <img src="images/vscode_graph_demo.gif" width="900"></p>
</details>
<details><summary>Работа через SSH:</summary>
<p align="center"> <img src="images/vscode_ssh_demo.gif" width="900"></p>
</details>
<details><summary>Запуск из консоли:</summary>
<p align="center"> <img src="images/vscode_wsl_demo.gif" width="900"></p>
</details>
Основные достоинства:
- Минималистичный
- Кроссплатформенный
- Отладка по SSH и в WSL
- Простой в настройке
- Встроенный Git
- Терминал
- поддерживает SWO и SEGGER RTT
## Установка
На [официальном сайте](https://code.visualstudio.com/Download) можно скачать различные версии для установки.
- User (только для одного пользователя)
- System (если пользователь Администратор)
Если есть права администратора, то рекомендую устанавливать [x64 System версию](https://code.visualstudio.com/docs/?dv=win64).
Если при запуске инсталятора выскакивает похожее окно, то вы пытаетесь установить не ту версию.
<p align="center"> <img src="images/vscode1.png"></p>
## VS Code uninstall
Если нужно полностью удалить VS Code, то кроме обычного удаления через Uninstall, нужно также почистить следующие папки:
- `C:\Program Files\Microsoft VS Code`
- `%USERPROFILE%\.vscode`
- `%AppData%\Code`

58
src/WSL.md Normal file
View File

@@ -0,0 +1,58 @@
# Windows Subsystem for Linux
WSL позволяет запускать, разрабатывать и отлаживать Linux программы на Windows. Более того обеспечивается удобная прозрачность между файловыми системами и возможность запускать программы друг-друга.
Существует две реализации WSL:
- WSL1 - транслятор API Linux <-> Windows
- WSL2 - виртуальная машина с полноценным ядром Linux.
Мы будем пользоваться WSL2. По скорости работы WSL2 почти не уступает нативной OS Linux. Более подробные отличия можно посмотреть в интеренете.
Находим в поиске: Включение или отключение компонентов Windows
Включаем галочки:
- Подсистема Windows для Linux
- Платформа виртуальной машины
<p align="center"> <img src="images/WSL1.png"></p>
Перезагружаем.
В терминале включаем WSL2 по умолчанию для всех дистрибутивов.
```
wsl --set-default-version 2
```
Далее из Microsoft Store можно устанавливать дистрибутивы Ubuntu, Debian, и др.
# Конфигурация WSL
Установленные дистрибутивы можно запускать из профиля [Windows Terminal](Windows-Terminal) так:
```
wsl.exe -d <distroname>
```
Например:
```
wsl.exe -d Ubuntu-20.04
```
Если после настройки .bashrc будет ругаться на переменные locale
то надо сгенерировать локаль ru_RU.UTF-8:
```
sudo dpkg-reconfigure locales
```
# Работа
Чтобы получить доступ к файловой системе виртуальной машины
надо при запущенной машине зайти в сетевую папку:
```
\\wsl$
```
Либо запустить внутри виртуальной машины:
```
explorer.exe .
```
Если используете VS Code то его можно открыть в нужной папке виртуальной машины:
```
code .
```

17
src/Windows-Terminal.md Normal file
View File

@@ -0,0 +1,17 @@
# Windows Terminal
[![IMAGE ALT TEXT HERE](images/WinTermYoutubeBtn.png)](https://www.youtube.com/watch?v=8gw0rXPMMPE)
Я нешел этот терминал самым удобным для использования в windows т.к. он позволяет заменить все необходимые терминалы существующие в винде. Такие как:
* cmd
* PowerShell
* Git-bash
* WSL (виртуальные машины)
* Putty (для удаленного администрироваия через SSH)
Получается единый терминал для всего, с едиными шрифтами, внешним видом, настройками. Ну и в конце-концов он просто красивый :)
Установить можно через Microsoft Store или скачав с [GitHub](https://github.com/microsoft/terminal).
Вот так этот терминал выглядит у меня:
![Мой терминал](images/MyWinTerm.png)

BIN
src/images/Git_Install1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/images/Git_Install2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/images/Git_Install3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/images/Git_Install4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/images/Git_Install5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
src/images/Git_Install6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/images/Git_Install7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/images/Git_Install8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/images/Git_Install9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
src/images/MyWinTerm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
src/images/WSL1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
src/images/YoutubeBtn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/images/vscode1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/images/vscode2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/images/vscode_demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB