Compare commits
1 Commits
main
...
767df8524f
| Author | SHA1 | Date | |
|---|---|---|---|
| 767df8524f |
18
README.md
@@ -1,13 +1,11 @@
|
|||||||
## Полезные мануалы
|
## Полезные мануалы
|
||||||
|
|
||||||
|
|
||||||
* [Установка GIT в windows](src/GIT-install-win.md)
|
* [Установка GIT в windows](man/GIT-install-win.md)
|
||||||
* [Конфигурация GIT](src/GIT-config.md)
|
* [Установка TortoiseGit](man/TortoiseGit.md)
|
||||||
* [SSH авторизация по ключам](src/SSH-key-auth-win.md)
|
* [Конфигурация GIT](man/GIT-config.md)
|
||||||
* [SSH подпись](src/GIT-SSH-sign.md)
|
* [SSH авторизация по ключам](man/SSH-key-auth-win.md)
|
||||||
* [GPG подпись](src/GIT-GPG-sign.md)
|
* [GIT в Bash](man/GIT-Bash.md)
|
||||||
* [Установка TortoiseGit](src/TortoiseGit.md)
|
* [VS Code](man/VS-Code.md)
|
||||||
* [GIT в Bash](src/GIT-Bash.md)
|
* [Windows Terminal](man/Windows-Terminal.md)
|
||||||
* [VS Code](src/VS-Code.md)
|
* [WSL2](man/WSL.md)
|
||||||
* [Windows Terminal](src/Windows-Terminal.md)
|
|
||||||
* [WSL2](src/WSL.md)
|
|
||||||
|
|||||||
@@ -10,6 +10,6 @@
|
|||||||
|
|
||||||
Если кто-то захочет разобраться во всех тонкостях настройки Bash, то он это сделает по официальной документации, и ничто не сможет его остановить. Я же предложу простой путь. Просто скачать и установить мою конфигурацию.
|
Если кто-то захочет разобраться во всех тонкостях настройки Bash, то он это сделает по официальной документации, и ничто не сможет его остановить. Я же предложу простой путь. Просто скачать и установить мою конфигурацию.
|
||||||
|
|
||||||
Для этого скачиваем [архив конфигурации](../../../../raw/branch/main/src/home-config/home-config.zip) и распаковываем в домашнюю папку пользователя с заменой. Не забываем перелогиниться чтобы изменения вступили в силу.
|
Для этого скачиваем [архив конфигурации](../../../../raw/branch/wiki/home-config.zip) и распаковываем в домашнюю папку пользователя с заменой. Не забываем перелогиниться чтобы изменения вступили в силу.
|
||||||
|
|
||||||
Теперь Bash будет автоматически распознавать что вы находитесь внутри репозитория Git и делать подсказки по работе.
|
Теперь Bash будет автоматически распознавать что вы находитесь внутри репозитория Git и делать подсказки по работе.
|
||||||
@@ -24,8 +24,6 @@ git config --global user.name "My name" # Имя пользовател
|
|||||||
git config --global user.email my@mail.com # Почта пользователя по умолчанию для всех коммитов
|
git config --global user.email my@mail.com # Почта пользователя по умолчанию для всех коммитов
|
||||||
git config --global color.ui true # Включаем цветной вывод в командах git
|
git config --global color.ui true # Включаем цветной вывод в командах git
|
||||||
git config --global core.quotepath off # Для правильного отображение русских имен файлов
|
git config --global core.quotepath off # Для правильного отображение русских имен файлов
|
||||||
git config --global core.editor "code --wait" # Для использования vscode редактора для rebase
|
|
||||||
git config --global fetch.prune true # Автоматическая очистка remote веток удаленных на сервере
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Дополнительно можно настроить удобные элиасы для часто используемых команд.
|
Дополнительно можно настроить удобные элиасы для часто используемых команд.
|
||||||
@@ -35,32 +33,20 @@ git config --global fetch.prune true # Автоматическая
|
|||||||
```
|
```
|
||||||
[user]
|
[user]
|
||||||
name = ARNik
|
name = ARNik
|
||||||
email = arnik@arnik.ru
|
email = r.anikeev@gmail.com
|
||||||
signingkey = AEBB0598F42201E3
|
|
||||||
[color]
|
[color]
|
||||||
ui = true
|
ui = true
|
||||||
[core]
|
[core]
|
||||||
quotepath = off # отображение русских имен файлов
|
quotepath = off # отображение русских имен файлов
|
||||||
editor = code --wait # vscode редактор для rebase
|
|
||||||
[alias]
|
[alias]
|
||||||
ll = log --oneline --graph --decorate --all
|
ll = log --oneline --graph --decorate --all
|
||||||
st = status --short
|
st = status --short
|
||||||
co = checkout
|
co = checkout
|
||||||
br = branch
|
br = branch
|
||||||
ct = commit
|
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\
|
lg = log --graph --all\
|
||||||
--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset %G?'
|
--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
|
||||||
|
|
||||||
# to pevent "fatal: detected dubious ownership in repository"
|
|
||||||
[safe]
|
|
||||||
directory = *
|
|
||||||
[gpg "ssh"]
|
|
||||||
allowedSignersFile = ~/.ssh/allowed_signers
|
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
Для изучения Git и в качестве справки хочу порекомендовать:
|
Для изучения Git и в качестве справки хочу порекомендовать:
|
||||||
@@ -116,8 +116,8 @@ $ ssh -T git@repo_url
|
|||||||
```
|
```
|
||||||
Что проверяю я:
|
Что проверяю я:
|
||||||
```
|
```
|
||||||
$ ssh -T git@git.arnik.ru
|
$ ssh -T git@github.com
|
||||||
$ ssh -T git@gitea.srv.mf-t.ru -p 1022
|
$ ssh -T git@git.fwdrd.ru
|
||||||
$ ssh -T git@gitlab.srv.mf-t.ru -p 2222
|
$ ssh -T git@gitlab.srv.mf-t.ru -p 2222
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Установка TortoiseGIT в windows.
|
# Установка TortoiseGIT в windows.
|
||||||
|
|
||||||
Перед тем как устанавливать TortoiseGit надо [установить Git for windows](GIT-install-win.md).
|
Перед тем как устанавливать TortoiseGit надо [установить Git for windows](GIT-install-win).
|
||||||
|
|
||||||
Скачиваем с официального сайта: https://tortoisegit.org/download/
|
Скачиваем с официального сайта: https://tortoisegit.org/download/
|
||||||
|
|
||||||
61
man/VS-Code.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Visual Studio Code
|
||||||
|
|
||||||
|
Очень популярный редактор для разработчиков. Достаточно простой с кучей дополнительных расширений которые можно установить из маркета.
|
||||||
|
|
||||||
|
В отличие от Eclipse быстрый, минималистичный и намного проще в настройке.
|
||||||
|
|
||||||
|
<p align="center"> <img src="images/vscode_demo.gif"></p>
|
||||||
|
<p align="center"> <img src="images/vscode_graph_demo.gif"></p>
|
||||||
|
<p align="center"> <img src="images/vscode_ssh_demo.gif"></p>
|
||||||
|
<p align="center"> <img src="images/vscode_wsl_demo.gif"></p>
|
||||||
|
|
||||||
|
Основные достоинства:
|
||||||
|
- Минималистичный
|
||||||
|
- Кроссплатформенный
|
||||||
|
- Отладка по SSH и в WSL
|
||||||
|
- Простой в настройке
|
||||||
|
- Встроенный Git
|
||||||
|
- Терминал
|
||||||
|
- поддерживает SWO и SEGGER RTT
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
На [официальном сайте](https://code.visualstudio.com/Download) можно скачать различные версии для установки.
|
||||||
|
|
||||||
|
- User (только для одного пользователя)
|
||||||
|
- System (если пользователь Администратор)
|
||||||
|
|
||||||
|
Если при запуске инсталятора выскакивает похожее окно, то вы пытаетесь установить не ту версию.
|
||||||
|
<p align="center"> <img src="images/vscode1.png"></p>
|
||||||
|
|
||||||
|
Функционал VS Code можно значительно расширить используя дополнительные расширения из маркета.
|
||||||
|
|
||||||
|
Для нашего случая устанавливаем следующее:
|
||||||
|
- [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
|
||||||
|
- [Better C++ Syntax](https://marketplace.visualstudio.com/items?itemName=jeff-hykin.better-cpp-syntax)
|
||||||
|
- [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph)
|
||||||
|
- [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)
|
||||||
|
- [Remote - SSH: Editing Configuration Files](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit)
|
||||||
|
- [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl)
|
||||||
|
- [Cortex-Debug](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug) - поддержка отладки с различными программаторами
|
||||||
|
- [stm32-for-vscode](https://marketplace.visualstudio.com/items?itemName=bmd.stm32-for-vscode) - надстройка над Cotex-Debug для автоматизации установки Toolchain и корневого Make-файла
|
||||||
|
|
||||||
|
## Настройка
|
||||||
|
Чтобы открыть настройки нажимаем Ctrl+,
|
||||||
|
|
||||||
|
Полезные настройки:
|
||||||
|
- Files: Auto save - автоматическое сохранение файлов
|
||||||
|
- Window: Title - настройка заголовка окна. Удобно установить в `${rootName}${separator}${rootPath}`
|
||||||
|
- Editor: Render Whitespace - показать невидимые символы. Полезно для мейкфайлов.
|
||||||
|
|
||||||
|
## VS Code uninstall
|
||||||
|
|
||||||
|
Если нужно полностью удалить VS Code, то кроме обычного удаления через Uninstall, нужно также почистить следующие папки:
|
||||||
|
- `C:\Program Files\Microsoft VS Code`
|
||||||
|
- `%USERPROFILE%\.vscode`
|
||||||
|
- `%AppData%\Code`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 436 KiB After Width: | Height: | Size: 436 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 438 KiB After Width: | Height: | Size: 438 KiB |
|
Before Width: | Height: | Size: 930 KiB After Width: | Height: | Size: 930 KiB |
|
Before Width: | Height: | Size: 6.1 MiB After Width: | Height: | Size: 6.1 MiB |
|
Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 2.2 MiB |
@@ -1,216 +0,0 @@
|
|||||||
# 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) не нужно, т.к. там храниться только криптографическая часть, без метаданных.
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
# 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
|
|
||||||
```
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# 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`
|
|
||||||
|
|
||||||
## VS Code полезные настройки
|
|
||||||
|
|
||||||
- `files.autoSave` - автоматическое сохранение файлов
|
|
||||||
- `workbench.editor.enablePreview` - открытие файлов в режиме preview
|
|
||||||
- `editor.renderWhitespace` - показ табов/пробелов
|
|
||||||
- `window.zoomLevel` - масштаб по умолчанию
|
|
||||||
- `terminal.integrated.cursorStyle` - вид курсора в терминале (line)
|
|
||||||
- `terminal.integrated.cursorBlinking` - (check)
|
|
||||||
- `terminal.integrated.cursorStyleInactive` - (underline)
|
|
||||||
- `editor.occurrencesHighlight` - подсветка при постановке курсора (off)
|
|
||||||
- `window.title` - называние окна и кнопки в панели задач (${rootName}${separator}${profileName})
|
|
||||||
- `workbench.list.openMode` - как открывать файлы (doubleClick)
|
|
||||||