Простой пользовательский интерфейс терминала для команд git.
Поддержание этого проекта стало возможным благодаря всем участникам и спонсорам. Если вы хотите спонсировать этот проект и чтобы ваш аватар или логотип компании появился ниже, нажмите здесь. ?
Время разглагольствовать: вы уже слышали это раньше, git — это мощь , но какой смысл в этой силе, когда все так чертовски сложно сделать? Интерактивное перебазирование требует, чтобы вы отредактировали чертов TODO-файл в своем редакторе? Ты шутишь, что ли? Чтобы подготовить часть файла, вам нужно использовать программу командной строки для прохождения каждого фрагмента, и если фрагмент не может быть разделен дальше, но содержит код, который вы не хотите размещать, вам придется отредактировать загадочный файл патча. вручную ? Ты шутишь, что ли?! Иногда вас просят сохранить изменения при переключении веток только для того, чтобы понять, что после переключения и извлечения не было никаких конфликтов, и было бы нормально просто извлечь ветку напрямую? ВЫ, ДОЛЖНО, ШУТИТЬ МЕНЯ!
Если вы простой смертный, как я, и устали слышать, насколько мощным является git, хотя в повседневной жизни это сильная заноза в заднице, lazygit может подойти вам.
Lazygit — это не моя работа на полный рабочий день, но это значительная подработка, поэтому, если вы хотите поддержать проект, рассмотрите возможность спонсировать меня.
Нажмите пробел на выбранной строке, чтобы подготовить ее, или нажмите v
, чтобы начать выбирать диапазон строк. Вы также можете нажать a
, чтобы выбрать весь текущий кусок.
Нажмите i
, чтобы начать интерактивную перезагрузку. Затем сдавите ( s
), исправьте ( f
), отбросьте ( d
), отредактируйте ( e
), переместите вверх ( ctrl+i
) или вниз ( ctrl+j
) любой из коммитов TODO, прежде чем продолжить перебазирование, вызвав перебазирование. меню опций, нажав m
и затем выбрав continue
.
Вы также можете выполнить любые эти действия единоразово (например, нажать s
при фиксации, чтобы сжать ее) без явного запуска перебазирования.
В этой демонстрации также используется Shift+Down для выбора диапазона коммитов для перемещения и исправления.
Нажмите shift+c
на коммите, чтобы скопировать его, и нажмите shift+v
чтобы вставить (выбрать вариант).
Нажмите b
в представлении коммитов, чтобы пометить коммит как хороший/плохой и начать git bisect.
Если вы действительно хотите просто избавиться от всего, что появляется при запуске git status
(и да, включая грязные подмодули) в стиле kidpix, нажмите shift+d
чтобы вызвать меню параметров сброса, а затем выберите опцию «nuke».
Нажатие shift+a
на любом коммите внесет в этот коммит текущие изменения (запуск интерактивного перебазирования в фоновом режиме).
Вы можете отфильтровать представление с помощью /
. Здесь мы фильтруем представление ветвей, а затем нажимаем enter
чтобы просмотреть его коммиты.
Lazygit имеет очень гибкую систему настраиваемых команд. В этом примере определяется пользовательская команда, которая имитирует встроенное действие извлечения ветки.
Вы можете создавать рабочие деревья, чтобы одновременно работать несколько ветвей без необходимости кэширования или создания незавершенных коммитов при переключении между ними. Нажмите w
в представлении ветвей, чтобы создать рабочее дерево из выбранной ветки и переключиться на него.
Вы можете создать собственный патч из старого коммита, а затем удалить его из коммита, выделить новый коммит, применить патч в обратном порядке к индексу и многое другое.
В этом примере у нас есть лишний комментарий, который мы хотим удалить из старого коммита. Мы нажимаем
на коммите, чтобы просмотреть его файлы, затем
на файле, чтобы сфокусировать патч, затем
чтобы добавить строку комментария к нашему пользовательскому патчу, а затем ctrl+p
чтобы просмотреть параметры пользовательского патча. ; выбор удаления патча из текущего коммита.
Узнайте больше в уроке Rebase Magic на Youtube.
Предположим, вы находитесь в функциональной ветке, которая сама является ответвлением от ветки разработки, и вы решили, что предпочли бы стать ответвлением от основной ветки. Вам нужен способ перебазировать только коммиты из вашей функциональной ветки. В этой демонстрации мы проверяем, какой коммит был последним в ветке разработки, затем нажимаем shift+b
, чтобы пометить этот коммит как наш базовый коммит, затем нажимаем r
в основной ветке, чтобы перебазироваться на него, перенося только коммиты из нашей функциональная ветка. Затем мы вносим наши изменения с помощью shift+p
.
Вы можете отменить последнее действие, нажав «z», и повторить его, нажав ctrl+z
. Здесь мы удаляем пару коммитов, а затем отменяем действия. Отмена использует журнал обновлений, специфичный для коммитов и ветвей, поэтому мы не можем отменить изменения в рабочем дереве или тайнике.
Дополнительная информация
При просмотре графика фиксации в увеличенном окне (используйте +
и _
для циклического изменения размера окна) отображается график фиксации. Цвета соответствуют авторам коммитов, и при перемещении вниз по графику подсвечиваются родительские коммиты выбранного коммита.
Если вы нажмете shift+w
на коммите (или ветке/ссылки), откроется меню, которое позволит вам пометить этот коммит, чтобы любой другой выбранный вами коммит сравнивался с ним. После того, как вы выбрали второй коммит, вы увидите разницу в главном представлении, и если вы нажмете
вы увидите файлы разницы. Вы можете нажать shift+w
чтобы снова просмотреть меню различий и увидеть такие параметры, как изменение направления сравнения или выход из режима сравнения. Вы также можете выйти из режима сравнения, нажав
.
Большинство из вышеперечисленных пакетов обслуживаются третьими лицами, поэтому обязательно проверьте их самостоятельно и убедитесь, что сопровождающий является человеком, заслуживающим доверия, который посещает местные спортивные игры и оказывает помощь своим сообществам, занимаясь сбором средств на барбекю и т. д.
Для Windows, Mac OS (10.12+) или Linux вы можете скачать двоичный выпуск здесь.
Обычно формулу lazygit можно найти в ядре Homebrew, но мы предлагаем вам воспользоваться нашей формулой, чтобы получить часто обновляемую формулу. Он работает и с Linux.
Кран:
brew install jesseduffield/lazygit/lazygit
Основной:
brew install lazygit
Последняя версия, созданная на основе выпусков GitHub. Кран:
sudo port install lazygit
Пакеты для Void Linux доступны в репозитории дистрибутива.
Они следят за последними выпусками
sudo xbps-install -S lazygit
Вы можете установить lazygit
с помощью Scoop. Это в разделе extras
:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
Пакеты для Arch Linux доступны через pacman и AUR (репозиторий пользователей Arch).
Есть два пакета. Стабильная версия, созданная на основе последней версии, и версия git, созданная на основе самого последнего коммита.
sudo pacman -S lazygit
Инструкции по установке контента AUR можно найти здесь: https://wiki.archlinux.org/index.php/Arch_User_Repository.
Пакеты для Fedora/RHEL и CentOS Stream доступны через Copr (Cool Other Package Repo).
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
sudo eopkg install lazygit
LAZYGIT_VERSION= $( curl -s " https://api.github.com/repos/jesseduffield/lazygit/releases/latest " | grep -Po ' "tag_name": "vK[^"]* ' )
curl -Lo lazygit.tar.gz " https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_ ${LAZYGIT_VERSION} _Linux_x86_64.tar.gz "
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
Проверьте правильность установки lazygit:
lazygit --version
Funtoo Linux имеет автоматически сгенерированный пакет lazygit в наборе для разработки:
sudo emerge dev-vcs/lazygit
Lazygit (пока) нет в основном порте Gentoo, однако ebuild доступен в оверлее GURU.
Вы можете добавить оверлей в свою систему и установить lazygit как обычно:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
Пакет lazygit в настоящее время встроен в devel:languages:go/lazygit.
Чтобы установить lazygit в openSUSE Tumbleweed, запустите:
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
Чтобы установить lazygit в openSUSE Leap, выполните:
source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/ $VERSION_ID /devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
На NixOs lazygit упаковывается вместе с nix и распространяется через nixpkgs. Вы можете попробовать lazygit без его установки с помощью:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
Или вы можете добавить lazygit в свой файл Configuration.nix в разделе Environment.systemPackages. Более подробную информацию можно найти на странице поиска NixOs.
Lazygit можно установить в среду Flox следующим образом.
flox install lazygit
Более подробную информацию о Flox можно найти на их сайте.
pkg install lazygit
apt install lazygit
Выпущенные версии доступны для разных платформ, см. https://anaconda.org/conda-forge/lazygit.
conda install -c conda-forge lazygit
go install github.com/jesseduffield/lazygit@latest
Обратите внимание: если вы получаете сообщение об ошибке, сообщающее, что lazygit не найден или не определен, вам может потребоваться добавить ~/go/bin
в $PATH (MacOS/Linux) или %HOME%gobin
(Windows). . Не путать с C:Gobin
(это собственные двоичные файлы Go, а не такие приложения, как lazygit).
Вы можете установить lazygit
с помощью Chocolatey:
choco install lazygit
Вы можете установить lazygit
с помощью команды winget
в терминале Windows с помощью следующей команды:
winget install - e -- id = JesseDuffield.lazygit
Вам нужно будет установить Go
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
Вы также можете использовать go run main.go
для компиляции и запуска за один раз (каламбур определенно задуман).
Вызовите lazygit
в своем терминале внутри репозитория git.
$ lazygit
Если хотите, вы также можете добавить для этого псевдоним с помощью echo "alias lg='lazygit'" >> ~/.zshrc
(или любого другого rc-файла, который вы используете).
Посмотреть список сочетаний клавиш можно здесь.
Если вы меняете репозитории в lazygit и хотите, чтобы ваша оболочка меняла каталог на этот репозиторий при выходе из lazygit, добавьте это в свой ~/.zshrc
(или другой rc-файл):
lg()
{
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
Затем source ~/.zshrc
, и с этого момента, когда вы вызываете lg
и выходите, вы переключаете каталоги на то, в чем вы находились внутри lazygit. Чтобы переопределить это поведение, вы можете выйти, используя shift+Q
а не просто q
.
Посмотреть документацию
Ознакомьтесь с документацией по конфигурации.
Посмотреть документацию
Если в lazygit отсутствует какая-либо функция, есть большая вероятность, что вы сможете реализовать ее самостоятельно с помощью специальной команды!
Посмотреть документацию
Lazygit поддерживает Gitflow, если он у вас установлен. Чтобы понять, как работает модель Gitflow, прочтите оригинальный пост Винсента Дриссена, объясняющий ее. Чтобы просмотреть параметры Gitflow из Lazygit, нажмите i
в представлении ветвей.
Нам нравится ваш вклад! Пожалуйста, ознакомьтесь с руководством по участию. Для обсуждения участниками вопросов, которые лучше не обсуждать здесь, в репозитории, присоединяйтесь к каналу Discord.
Если вы хотите понять, с чего начать, посмотрите это видео, в котором рассказывается о создании небольшой функции в lazygit.
Запустите lazygit --debug
на одной вкладке терминала и lazygit --logs
на другой, чтобы просмотреть программу и вывод ее журнала параллельно.
Если вы хотите поддержать разработку lazygit, рассмотрите возможность спонсировать меня (github компенсирует все пожертвования доллар за доллар в течение 12 месяцев).
Если вы хотите узнать, чем я (Джесси) занимаюсь в плане развития, подписывайтесь на меня в Твиттере или посетите мой блог.
Если вы обнаружите, что lazygit не совсем удовлетворяет вашим требованиям, возможно, они подойдут лучше: