Skip to content

Instantly share code, notes, and snippets.

@1234ru
Last active February 12, 2024 14:24
Show Gist options
  • Save 1234ru/0af93e343495e62e852d6c5951314914 to your computer and use it in GitHub Desktop.
Save 1234ru/0af93e343495e62e852d6c5951314914 to your computer and use it in GitHub Desktop.
Git и bash под Windows

Установочный пакет можно скачать здесь https://git-scm.com/download/win (см. также https://gitforwindows.org/).

Далее будет рассмотрена работа с portable-версией.

bash

В пакете присутствует не только сам git, но и средства для работы в командной строке, которые позволяют сделать рабочий процесс практически полностью идентичным таковому в Unix-системах. (При этом, в отличие от подсистемы Windows for Linux, нет ни необходимости устанавливать дополнительные компоненты ОС, ни жёстких требований к новизне версии Windows).

В первую очередь, это оболочка bash, которая поддерживает цвета и комбинации клавиш, а также сопутствующие программы из числа наиболее часто используемых в Linux (ls, grep, curl, vim, ssh(!) и пр.) делают возможными многие привычные операции.

Настройка

Для настройки bash (например, вида системного приглашения) используется стандартный файл .bashrc, который нужно разместить в домашнем каталоге пользователя (C:/Users/пользователь).

В первую очередь, необходимо указать работу в кодировке UTF-8:

export LANG=ru_RU.UTF-8

(Кодировку также нужно будет указать самому терминалу - см. ниже).

Также наверняка захочется настроить вид системного приглашения (текущее можно посмотреть, дав команду echo $PS1):

PS1="New system prompt"

Перечитать конфигурационный файл без перезапуска терминала можно командой . ~/.bashrc.

Пути файловой системы

Все пути начинаются с / (как в Unix-системах). Путь вида C:/somedir отображается в виде /c/somdeir. Можно использовать и в оригинале (C:/...), но с ним не будет работать достройка путей по Tab.

Действует сокращение ~, указывающее на домашний каталог пользователя.

Имена системных переменных нужно писать, начиная с $, а не обрамляя %: echo $PATH, а не echo %PATH.

Кодировка терминала

При прямом запуске из командной строки bash стартует в стандартной консоли Windows cmd, которая работает в кодировке CP866. Чтобы консоль работала в UTF-8, перед запуском bash нужно дать команду CHCP 65001.

Автоматизировать этот процесс можно так:

  1. Создать рядом с bash.exe файл b.bat (короткое имя - для быстрого запуска):
@echo off
CHCP 65001 > nul
{каталог git}\bin\bash
  1. Запускать bat-файл из диалога Run: Win+R; b; Enter.

В результате будет получен полностью готовый к работе терминал с командной оболочкой bash.

vi

Редактор vi (а точнее, vim) используется как стандартный редактор при написании commit-сообщений git. Для корректной работы с кириллическим текстом в настройках запуска vim нужно явно указать кодировку UTF-8. Это делается в файле .vimrc, который нужно поместить в домашний каталог пользователя (по аналогии с *nix-системами):

set encoding=utf-8

Предварительно терминалу Windows обязательно должна быть установлена кодовая страница 65001 (см. предыдущий пункт), иначе редактор будет работать некорректно.

git

Первичная настройка

Глобальные настройки на уровне пользователя ОС git хранит в файле .gitconfig в домашнем каталоге пользователя так же, как в Linux. Можно сразу скопировать этот файл с какого-нибудь рабочего сервера и исправить в нем нужные места, вместо того, чтобы давать набор команд git config --global.

Как правило, необходимо указать имя и email:

git config --global user.name = "..."
git config --global user.email = "..."

Без этого git не даст отправлять изменения в удаленные репозитории (git push).

SSH

Чтобы получать и отправлять изменения в удалённые репозитории без ввода пароля, git должен иметь возможность пользоваться ssh-ключом. У самого git нет настроек, позволяющих явно указывать ключ - в этом он всецело полагается на команду ssh.

Самый простой путь задействовать свой приватный ключ - скопировать его openssh-версию в файл ~/.ssh/id_rsa (снова точно так же, как в Linux). Он будет использоваться не только при работе git, но и при использовании команды ssh для соединения к удаленным сервером напрямую (которую можно использовать как альтернативу putty).

Такой подход предполагает, что для всех соединений будет использоваться один и тот же ключ.

Другой способ - создать файл .ssh/config в домашнем каталоге Windows (типа C:/Users/пользователь), где указать расположение приватного ключа:

Host *
 IdentityFile "D:/.../ключ.openssh"

Подробнее см. https://stackoverflow.com/a/25924462.

Странности (то, что работает не так, как в Linux)

  • git help вместо вывода консоль открывает в браузере html-страницу мануала из каталога {git}/mingw64/share/doc/git-doc/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment