Это продвинутая конфигурация Bash, разработанная для решения одной главной проблемы: как поддерживать идентичное, удобное и мощное окружение командной строки на всех удаленных машинах, с которыми вы работаете по SSH?
Эта система избавляет от необходимости вручную копировать .bashrc
на каждый сервер и рисковать, затирая существующие настройки. Вместо этого она "на лету" создает ваше привычное окружение на любой машине, куда вы подключаетесь, и даже централизованно собирает историю команд со всех серверов.
- Полная синхронизация окружения: Ваши псевдонимы (aliases), функции и переменные окружения (exports) будут доступны на любом сервере, куда вы подключитесь через
sshb
. - Централизованная "вечная" история: Все команды, выполненные на любом сервере, сохраняются в один локальный файл
~/.bash_eternal_history
, с указанием пользователя, хоста и каталога. - Умное и безопасное SSH-подключение (
sshb
): Главная "магическая" функцияsshb
использует мультиплексирование SSH для мгновенных повторных подключений и автоматически настраивает окружение, не оставляя мусора после себя. - Интерактивное управление инфраструктурой: Управляйте Kubernetes, Docker, systemd и Terraform с помощью удобных fzf-меню, не покидая терминал.
- Продвинутая работа с Git: Переключайтесь между ветками и Pull Request'ами, просматривайте логи, управляйте stash и выполняйте cherry-pick в интерактивном режиме.
- Модульная структура: Конфигурация разделена на 4 логических файла для легкой поддержки и расширения (
.bashrc
,.bash_export
,.bash_functions
,.bash_aliases
).
- Модульная структура: Конфигурация разделена на 4 логических файла для легкой поддержки и расширения (
- Встроенная справка: Команды ha и fa покажут вам список всех доступных псевдонимов и функций с описаниями.
- Множество утилит: Включает десятки полезных псевдонимов и функций для работы с
git
,docker
, файловой системой, сетью и многого другого.
- Множество утилит: Включает десятки полезных псевдонимов и функций для работы с
Функция sshb
— это сердце всей системы. Когда вы выполняете sshb user@server
, происходит сложный, но надежный процесс:
-
Создание безопасной среды:
- На вашей локальной машине создается временный, защищенный каталог с помощью
mktemp -d
. Это исключает уязвимости. - В этом каталоге создается управляющий сокет для SSH.
- На вашей локальной машине создается временный, защищенный каталог с помощью
-
Установка "Мастер-соединения":
- Выполняется команда
ssh -fNM user@server
. Она создает фоновое, постоянное SSH-соединение с сервером. Все последующие коммуникации будут проходить через него мгновенно, без повторной аутентификации.
- Выполняется команда
-
Упаковка окружения:
sshb
локально собирает содержимое всех ваших конфигурационных файлов (.bashrc
,.bash_export
,.bash_functions
,.bash_aliases
) в один "пакет".
-
Отправка и настройка на сервере:
- Этот "пакет" по защищенному каналу отправляется на удаленный сервер и сохраняется во временный файл
~/.bash-ssh
. - Если вы уже находитесь внутри сессии
sshb
и подключаетесь дальше, настраивается обратный туннель для пересылки истории команд на вашу локальную машину.
- Этот "пакет" по защищенному каналу отправляется на удаленный сервер и сохраняется во временный файл
-
Запуск "магической" сессии:
- Выполняется финальная команда:
exec bash --rcfile ~/.bash-ssh -i
. exec bash ...
: Запускается новый экземплярbash
.--rcfile ~/.bash-ssh
: Это ключевой флаг. Он принудительно заставляетbash
использовать наш отправленный "пакет" в качестве единственного файла конфигурации, полностью игнорируя системный.bashrc
на сервере.-i
: Запускает оболочку в интерактивном режиме.
- Выполняется финальная команда:
-
Автоматическая очистка:
- Как только вы выходите с сервера (командой
exit
),sshb
автоматически закрывает фоновое "мастер-соединение". - Срабатывает механизм
trap
, который гарантированно удаляет временный каталог и управляющий сокет с вашей локальной машины, не оставляя следов.
- Как только вы выходите с сервера (командой
Этот подход гарантирует, что ваше окружение будет полностью воссоздано на удаленной машине без изменения ее системных файлов.
Проект имеет простую и понятную модульную структуру:
~/.bashrc
: Главный файл, точка входа. Он обрабатывает логику SSH-подключений и загружает остальные части конфигурации.~/.bash_export
: Здесь определяются все переменные окружения ($PATH
,$EDITOR
), настройки истории, локали и инициализация менеджеров версий.~/.bash_functions
: Коллекция полезных shell-функций, включая "магическую" функциюsshb
и утилиты для работы с файлами, сетью иgit
.~/.bash_aliases
: Большая коллекция псевдонимов для ускорения повседневной работы в терминале.
-
Клонируйте репозиторий:
git clone https://github.com/kootik/bash.git ~/.dotfiles
-
Создайте символические ссылки:
ln -s ~/.dotfiles/.bashrc ~/.bashrc ln -s ~/.dotfiles/.bash_export ~/.bash_export ln -s ~/.dotfiles/.bash_functions ~/.bash_functions ln -s ~/.dotfiles/.bash_aliases ~/.bash_aliases
-
Установите зависимости: Убедитесь, что у вас установлены необходимые утилиты.
# Для Debian/Ubuntu sudo apt-get update sudo apt-get install socat fzf jq trash-cli xclip fd-find ripgrep bat # Для macOS (используя Homebrew) brew install socat fzf jq trash jq trash-cli xclip fd-find ripgrep bat # Для Fedora/CentOS sudo dnf install fzf jq trash-cli ripgrep xclip
-
Перезапустите оболочку: Откройте новую вкладку терминала или выполните
source ~/.bashrc
.
Теперь вместо ssh
используйте команду sshb
для подключения к удаленным серверам.
socat
: (Опционально) Используется для создания надежного TCP-сервера для приема истории команд.- fzf: (Обязательно) Мощный нечеткий поиск, основа всех интерактивных утилит.
- jq: (Рекомендуется) Используется для форматирования JSON-ответов.
- trash-cli (или trash на macOS): (Рекомендуется) Для безопасного перемещения файлов в корзину.
- ripgrep (rg): (Рекомендуется) Для сверхбыстрого поиска по коду (frg, ftodo).
- gh: (Рекомендуется) Для работы с GitHub Pull Requests (fpr).
- xclip: (Рекомендуется) Для интеграции с системным буфером обмена.
Этот проект распространяется под лицензией GNU General Public License v3.0. Это означает, что он является свободным программным обеспечением, и вы можете его изменять и распространять на тех же условиях.
Для быстрого просмотра всех доступных команд используйте:
-
ha - показать все псевдонимы (aliases).
-
fa - показать все функции.
[Изображение справки по псевдонимам в терминале]
на фото часть функций и алиасов
Это новые мощные утилиты, которые превращают вашу командную строку в интерактивное меню.
Функция | Назначение | Требования | Пример |
---|---|---|---|
kns | Интерактивно переключить Namespace в текущем контексте. | kubectl | kns |
kctx | Интерактивно переключить Контекст (кластер). | kubectl | kctx |
kdecode | Декодировать секреты из Base64, выбрав их из списка. | kubectl, jq | kdecode |
Функция | Назначение | Требования | Пример |
---|---|---|---|
d_dive | Интерактивно "запрыгнуть" в работающий контейнер, выбрав его из списка. | docker | d_dive |
dlogs | Показать логи контейнера с возможностью слежения (-f), выбрав его из списка. | docker | dlogs -f |
Функция | Назначение | Требования | Пример |
---|---|---|---|
gfs | Интерактивно управлять git stash (apply, pop, drop). | git | gfs |
gfc_pick | Интерактивно выбрать коммиты для cherry-pick из другой ветки. | git | gfc_pick |
gsync | Синхронизировать ваш форк с оригинальным (upstream) репозиторием. | git | gsync |
fpr | Интерактивно переключиться на Pull Request из GitHub. | gh | fpr |
Функция | Назначение | Требования | Пример |
---|---|---|---|
fkill | Интерактивно "убить" один или несколько процессов, выбрав их из списка. | - | fkill |
svc | Интерактивно управлять службами systemd (status, restart, stop, start). | systemctl | svc |
fports | Просмотреть открытые порты и связанные с ними процессы, с возможностью их завершения. | ss | fports |
sshm | Интерактивно подключиться к хосту из ~/.ssh/config. | ssh | sshm |
fcd | Интерактивно перейти в любой подкаталог текущей директории. | find или fd | fcd |
check_ssl | Проверить SSL-сертификат домена: кем выдан и срок действия. | openssl | check_ssl google.com |
Функция | Назначение | Требования | Пример |
---|---|---|---|
tfswitch | Интерактивно переключить workspace в Terraform. | terraform | tfswitch |
jwtdec | Быстро декодировать JWT токен для просмотра header и payload. | jq (опц.) | jwtdec <token> |
frg | Сверхбыстрый интерактивный поиск по коду с помощью ripgrep. | rg | frg "MyApi" |
ftodo | Найти все комментарии TODO, FIXME, NOTE в проекте. | rg | ftodo |
Функция | Назначение | Требования | Пример |
---|---|---|---|
pg_backup | Интерактивно создать дамп базы данных PostgreSQL, выбрав ее из списка. | psql, pg_dump | pg_backup |
Этот документ — детальный разбор псевдонимов, которые делают работу в командной строке быстрее, удобнее и безопаснее. Для каждой группы псевдонимов указана полная команда, назначение и наглядные примеры.
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
ls | ls -AhF --color=auto | Улучшенный ls по умолчанию. Показывает скрытые файлы, типы и использует цвета. | ls |
l | ls -l | Краткий псевдоним для вывода списка в длинном формате (без скрытых файлов). | l |
ll | ls -alF | Показать все файлы в подробном формате с индикаторами типа. | ll /var/log |
la | ls -la | Аналог ll, но без индикаторов типа (-F). | la |
lart | ls -alrt | Показать все файлы, отсортированные по дате изменения (самые новые внизу). | lart ~/Downloads |
lS | ls -alSrh | Показать все файлы, отсортированные по размеру (самые большие внизу). | lS |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
.. | cd .. | Перейти на один уровень вверх. | .. |
... | cd ../.. | Перейти на два уровня вверх. | ... |
.... | cd ../../.. | Перейти на три уровня вверх. | .... |
-- - | cd - | Вернуться в предыдущий каталог. | cd /etc, cd /tmp, - |
gt | cd "$(git rev-parse --show-toplevel)" | Мгновенно перейти в корневой каталог текущего Git-репозитория. | gt |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
rm | rm -Iv | "Безопасное" удаление. Запрашивает подтверждение при удалении >3 файлов. | rm *.tmp |
cp | cp -iv | "Безопасное" копирование. Запросит подтверждение перед перезаписью файла. | cp script.sh /bin |
mv | mv -iv | "Безопасное" перемещение. Запросит подтверждение перед перезаписью. | mv log.txt /logs |
del | trash | Переместить файл в системную корзину вместо безвозвратного удаления. | del photo.jpg |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
chmx | chmod +x | Быстро сделать файл исполняемым. | chmx ./install.sh |
chmod | chmod -c --preserve-root | Стандартный chmod с защитой от случайного chmod -R /. | chmod 600 key.pem |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
df | df -Tha --total | Показать использование дискового пространства в удобном формате. | df |
dus | du -sh * | sort -rh | Показать размер всего в текущей папке, отсортировав по убыванию. |
psmem | ps auxf | sort -nr -k 4 | head -10 |
pscpu | ps auxf | sort -nr -k 3 | head -10 |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
ports | ss -tulanp | Показать все активные сетевые соединения и слушающие порты. | ports |
myip | curl -s ifconfig.me; echo | Узнать свой внешний (публичный) IP-адрес. | myip |
serve | python3 -m http.server | Запустить простой веб-сервер для раздачи файлов из текущей папки. | cd ~/share && serve |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
ni | npm install | Установить зависимости из package.json. | ni |
nid | npm install --save-dev | Установить пакет как зависимость для разработки. | nid eslint |
dps | docker ps -a | Показать все контейнеры Docker, включая остановленные. | dps |
dex | docker exec -it | Запустить bash внутри работающего контейнера. | dex postgres-db bash |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
k | kubectl | Сокращение для kubectl. | k get pods |
kg | kubectl get | Сокращение для получения ресурсов. | kg services |
kd | kubectl describe | Показать детальное описание ресурса. | kd pod/my-app-123 |
ka | kubectl apply -f | Применить конфигурацию из файла. | ka deployment.yaml |
kga | kubectl get all --all-namespaces | Показать все ресурсы во всех пространствах имен. | kga |
Псевдоним | Полная команда | Назначение | Пример |
---|---|---|---|
h | history | Показать историю команд. | h |
hg | history | grep | Искать в истории команд. |
reload | source ~/.bashrc | Перезагрузить конфигурацию Bash в текущем окне. | reload |
sudo | sudo | Трюк с пробелом, чтобы sudo работало с другими псевдонимами. | sudo ll /root |
cb-copy | xclip -selection clipboard | Скопировать стандартный ввод в буфер обмена. | cat file.txt |
cb-paste | xclip -selection clipboard -o | Вставить содержимое буфера обмена. | cb-paste > new.txt |
Этот документ — подробный разбор вспомогательных функций, которые автоматизируют рутинные задачи, не связанные напрямую с Git. Они помогут вам эффективнее управлять файлами, системой, сетью и рабочим окружением.
-
Назначение: Быстрое создание резервной копии файла с добавлением текущей даты и времени в имя.
-
Как это работает: Использует команду cp -iv, копируя указанный файл в новый с суффиксом .ГГГГ-ММ-ДД_ЧЧ:ММ:СС.
-
Когда использовать: Пе 103C7 ед тем, как вносить рискованные изменения в важный файл (например, файл конфигурации).
-
Пример использования:
# Создать резервную копию nginx.conf перед редактированием
bak /etc/nginx/nginx.conf# Будет создан файл: /etc/nginx/nginx.conf.2025-08-09_23-49-00
- Назначение: Создать каталог (включая все родительские) и немедленно перейти в него.
- Как это работает: Объединяет две команды: mkdir -p (создать путь) и cd (перейти в каталог).
- Когда использовать: Когда вы создаете новую структуру каталогов для проекта и хотите сразу начать в ней работать.
- Пример использования:
# Создать структуру для нового веб-проекта и перейти в нее
mkcd ~/projects/new-cool-app/src
# Вы окажетесь в каталоге ~/projects/new-cool-app/src
-
Назначение:
- ff (Find File): Искать файлы по имени (или маске) в текущем каталоге и всех его подкаталогах.
- fd (Find Directory): Искать каталоги по имени.
-
Как это работает: Это удобные обертки над стандартной командой find.
-
Когда использовать: Когда вы знаете имя файла/каталога, но не помните, где именно он лежит в большом проекте.
-
Пример использования:
# Найти все файлы с расширением .md в проекте
ff "*.md"# Найти каталог с компонентами в проекте React
fd "components"
- Назначение: Безопасное удаление файлов и каталогов путем перемещения их в системную корзину, а не безвозвратного стирания.
- Как это работает: Использует утилиту trash-cli. Если она не установлена, функция сообщит об этом.
- Когда использовать: Всегда, вместо rm, когда вы не уверены на 100%, что файл вам больше никогда не понадобится.
- Пример использования:
# Переместить ненужный лог-файл в корзину
trash old_log.txt
- Назначение: Универсальный распаковщик, который автоматически определяет тип архива и использует правильную команду для его извлечения.
- Как это работает: Конструкция case проверяет расширение файла и вызывает соответствующую команду (tar, unzip, unrar и т.д.).
- Когда использовать: Чтобы не вспоминать флаги для tar и не искать, какая команда нужна для .rar или .7z.
- Пример использования:
# Распаковать несколько разных архивов одной командой
extract project.zip backup.tar.gz documents.rar
-
Назначение:
- targz: Быстро создать архив .tar.gz.
- zipf: Быстро создать .zip архив, автоматически исключая ненужные файлы (.git, .DS_Store).
-
Как это работает: Обертки над командами tar и zip с предустановленными оптимальными флагами.
-
Когда использовать: Когда нужно быстро заархивировать проект или каталог для отправки коллеге или для резервного копирования.
-
Пример использования:
# Заархивировать каталог проекта в my-app.tar.gz
targz ./my-app# Создать zip-архив с исходниками, исключив git
zipf ./my-app-sources
- Назначение: Выполнить DNS-запрос через защищенный сервис Google DNS-over-HTTPS и красиво отформатировать ответ.
- Как это работает: Отправляет запрос с помощью curl и форматирует полученный JSON с помощью jq.
- Когда использовать: Когда стандартный dig или nslookup заблокирован или вы хотите получить более подробную информацию в удобном виде.
- Пример использования:
doh github.com
- Назначение: Показать краткий прогноз погоды для указанного города (или Москвы по умолчанию) прямо в терминале.
- Как это работает: Использует сервис wttr.in с помощью curl.
- Пример использования:
# Погода в Монреале
weather Montreal
- Назначение: Принудительно завершить все процессы, чье имя соответствует заданному шаблону.
- Как это работает: Безопасная обертка над pkill, которая находит и "убивает" процессы.
- Когда использовать: Когда программа зависла и нужно завершить все ее процессы.
- Пример использования:
# Завершить все процессы, связанные с зависшим плеером VLC
killg vlc
-
Назначение: Проверить, открыт ли определенный TCP-порт на удаленном хосте.
-
Как это работает: Использует утилиту nc (netcat) с коротким таймаутом для попытки соединения.
-
Когда использовать: Для быстрой диагностики сетевых проблем. Например, чтобы проверить, доступен ли веб-сервер или база данных.
-
Пример использования:
# Проверить, работает ли веб-сервер на example.com
checkport example.com 443# Проверить, доступен ли сервер PostgreSQL
checkport db.internal.host 5432
- Назначение: Заблокировать экран компьютера.
- Как это работает: Интеллектуально определяет доступную в вашей системе команду для блокировки экрана (xdg-screensaver, loginctl и др.) и выполняет ее.
- Когда использовать: Когда вы отходите от компьютера и хотите быстро заблокировать сеанс.
- Пример использования:
lock
- Назначение: Показать логи конкретного сервиса (unit) в systemd и следить за их обновлением в реальном времени.
- Как это работает: Вызывает journalctl -u [имя_юнита] -f.
- Когда использовать: Для отладки системных сервисов, таких как nginx, docker, sshd и т.д.
- Пример использования:
# Смотреть логи веб-сервера nginx в реальном времени
jnl-unit nginx.service
- Назначение: Выполнить быструю очистку системы Docker: удалить остановленные контейнеры, неиспользуемые образы, сети и кэш сборки.
- Как это работает: Выполняет docker container prune и docker system prune.
- Когда использовать: Регулярно, чтобы освободить место на диске, которое занимает Docker.
- Пример использования:
dclean
- Назначение: Создать новое виртуальное окружение Python, сразу же активировать его и обновить pip.
- Как это работает: Объединяет три шага: python3 -m venv, source activate и pip install -U pip.
- Когда использовать: В самом начале работы над любым новым проектом на Python.
- Пример использования:
# Создать и активировать окружение для нового проекта
mkvenv my-django-project-env
-
Назначение: Легко и быстро загрузить файл или каталог на сервис transfer.sh и получить ссылку для скачивания.
-
Как это работает: Использует curl для загрузки файла. Если передается каталог, он сначала автоматически архивируется в .zip.
-
Когда использовать: Когда нужно быстро поделиться файлом с кем-то, у кого нет доступа к вашему компьютеру. Ссылка действительна 14 дней.
-
Пример использования:
# Загрузить один файл
transfer report.pdf# Загрузить целый каталог
transfer ./screenshots# Загрузить вывод команды
ls -l | transfer file-list.txt
- Назначение: Перейти вверх по иерархии каталогов на заданное количество уровней.
- Как это работает: Генерирует путь вида ../../.. и выполняет cd.
- Когда использовать: Удобнее, чем печатать cd ../../...
- Пример использования:
# Находясь в /home/user/projects/app/src/components
# Перейти на 3 уровня вверх в /home/user/projects
up 3
-
Назначение: Простой калькулятор в командной строке с поддержкой чисел с плавающей точкой.
-
Как это работает: Передает математическое выражение утилите bc.
-
Когда использовать: Для быстрых вычислений, не покидая терминал.
-
Пример использования:
calc "10 / 3"
# Вывод: 3.3333333333calc "(15.5 * 4) + 2"
# Вывод: 64
Этот документ — подробный разбор продвинутых функций для работы с Git. Они разделены на две категории: функции-комбо для автоматизации рутины и интерактивные функции на базе fzf для мощного поиска и управления.
Эти функции объединяют несколько стандартных команд Git для выполнения частых задач одной короткой командой.
Категория | Описание |
---|---|
Назначение | Добавить все файлы, сделать коммит и отправить изменения на GitHub. Это самая частая последовательность действий. |
Как это работает | Выполняет git add --all, затем git commit -m "ваше сообщение" и git push. |
Когда использовать | Когда вы завершили логическую часть работы и хотите быстро сохранить и опубликовать результат. |
Представьте, вы закончили работу над формой входа.
Вместо того, чтобы печатать:
git add --all
git commit -m "feat: реализована базовая форма входа"
git push
Вы просто печатаете:
gacp "feat: реализована базовая форма входа"
Категория | Описание |
---|---|
Назначение | Создать новую ветку, сразу переключиться на нее и опубликовать на GitHub, установив связь для отслеживания. |
Как это работает | Выполняет git checkout -b <имя_ветки> и затем git push -u origin <имя_ветки>. |
Когда использовать | В самом начале работы над новой задачей (feature, bugfix). |
Вам нужно начать работу над задачей PROJ-123.
Вместо того, чтобы печатать:
git checkout -b feature/PROJ-123
git push --set-upstream origin feature/PROJ-123
Вы просто печатаете:
gnewbranch feature/PROJ-123
Категория | Описание |
---|---|
Назначение | 🧹 Навести порядок в локальном репозитории, удалив все ветки, которые уже были слиты в main или master. |
Как это работает | Синхронизируется с удаленным репозиторием (git fetch --prune), находит все слитые ветки и безопасно удаляет их через git branch -d. |
Когда использовать | Регулярно, чтобы локальный репозиторий не захламлялся десятками старых веток. |
За неделю вы слили несколько веток. Чтобы очистить локальный репозиторий:
gprune
Вывод будет примерно таким:
Основная ветка: main. Удаление слитых веток...
Deleted branch feature/login (was a1b2c3d).
Deleted branch hotfix/typo (was e4f5g6h).
Очистка завершена.
Эти функции превращают командную строку в интерактивное меню с нечетким поиском. Требуют установленной утилиты fzf.
Категория | Описание |
---|---|
Назначение | Интерактивное переключение между ветками с предпросмотром последних коммитов. |
Как это работает | Показывает отсортированный список веток в fzf. При навигации по списку справа отображаются последние коммиты выбранной ветки. |
Когда использовать | Когда у вас много веток и вы не помните точное название нужной. |
Выполните gfb, начните печатать часть названия ветки, выберите нужную стрелками и нажмите Enter.
Категория | Описание |
---|---|
Назначение | Интерактивный просмотр git log с возможностью детального просмотра каждого коммита. |
Как это работает | Показывает историю коммитов в fzf. В окне предпросмотра отображается git show. <br> Горячие клавиши: Enter для полного просмотра, Ctrl-D для просмотра изменений (diff). |
Когда использовать | Когда нужно найти определенный коммит в истории или посмотреть, какие изменения он внес. |
Выполните gfl, найдите нужный коммит поиском и нажмите Ctrl-D, чтобы увидеть только изменения, которые он принес.
Категория | Описание |
---|---|
Назначение | Интерактивное добавление файлов в индекс (git add). |
Как это работает | Показывает список измененных файлов в fzf. Справа отображается diff для выбранного файла. Можно выбрать несколько файлов через Tab. |
Когда использовать | Когда вы изменили много файлов, но хотите сделать несколько логически разделенных коммитов. |
Выполните gfa, с помощью Tab выберите файлы для первого коммита и нажмите Enter. Они будут добавлены в индекс.
Категория | Описание |
---|---|
Назначение | Интерактивное восстановление одного файла из любого коммита в истории. |
Как это работает | Сначала вы выбираете коммит в fzf, затем в новом окне fzf выбираете файл из этого коммита для восстановления. |
Когда использовать | Когда вы случайно удалили или испортили файл и хотите быстро вернуть его рабочую версию. |
Выполните gfc, найдите коммит, где файл был в порядке, выберите его, а затем выберите сам файл. Он будет восстановлен в вашей рабочей директории.
Категория | Описание |
---|---|
Назначение | Интерактивное удаление локальных веток. |
Как это работает | Показывает список веток (кроме main/master и текущей) в fzf. Можно выбрать несколько веток для удаления через Tab. |
Когда использовать | Как альтернатива gprune, если вы хотите вручную выбрать, какие ветки удалить. |
Выполните gfd, выберите с помощью Tab несколько старых веток и нажмите Enter для их удаления.