Git portable для windows

Git для Windows

Git — одна из лучших бесплатных систем контроля версий и управления проектами, используемая программистами в процессе разработки для хранения истории файлов с возможностью отмены внесённых изменений, а так же для совместной или параллельной разработки с последующим объединением результатов.

Попросту говоря, использование в проекте системы контроля версий Git даёт разработчикам возможность делать «снимки» файлов проекта, к которым можно впоследствии вернуться, если в процессе разработки что-то пошло «не так». То есть, если внесённые в код правки приведут к неожиданным последствиям и негативно скажутся на работе всего проекта, программисту не придётся вспоминать, в каких именно файлах и какие изменения вносились и как код выглядел до правок, можно просто вернуть файлы к их более раннему состоянию.

Именно система «снимков» кардинально отличает Git от большинства систем контроля версий, таких как Subversion, Bazaar и подобных им. Другие системы контроля версий оперируют файлами и наборами изменений (патчами) которые сохраняются для хранимых файлов с течением времени. Git хранит «снимки» проекта в определённый период времени, если какой-либо файл изменён, записывается его новая версия, если нет — файл не дублируется, а просто делается ссылка на уже имеющийся.

Хранение на компьютере локальной копии репозитория позволяет Git практически мгновенно показывать историю проекта и откатывать сделанные изменения. При необходимости сравнения свежего файла ранее с сохранённым, Git локально сравнивает файлы и показывает разницу, без какой-либо сетевой задержки. Вы можете полноценно работать с проектом без подключения к сети и создавать новые слепки, которые будут синхронизированы с сервером при подключении к Интернету.

Ещё одна важная чать Git это ветвления и форки. Ветвления, как следует из названия, дают возможность делать ответвления от основного проекта, в которых можно вести работу над новыми функциями. По завершению разработки можно сделать объединение ветвей, при этом Git проанализирует все внесённые изменения и предложит варианты решения возможных конфликтов. Форк (fork) в свою очередь позволяет использовать код имеющегося проекта для старта нового, на его основе. При этом следует как можно чаще обновлять исходную кодовую базу, чтобы поддерживать версию форка в актуальном состоянии.

Многих начинающих программистов отпугивало управление Git, которое осуществлялось с помощью терминала, однако современные релизы включают в себя простой графический интерфейс, а на официальном сайте предполагается более двух десятков различных графических оболочек от сторонних разработчиков, которые упрощают использование этой системы контроля версий.

Portable Git

Review

Free Download

Keep track of all file changes using this command-line and portable application for managing source code, featuring rich and simple-to-activate options

What’s new in Portable Git 2.31.1:

  • Bug Fixes:
  • It is now possible to execute the Windows Store version of python3.exe from Git Bash.

Read the full changelog

This is the portable edition of Git, a command-line application that enables graphic and web designers to keep all versions of a picture or layout, by storing all data in a collection of snapshots taken from a small filesystem.

Читайте также:  Драйвер для клавиатуры oklick 780l windows 10

Portability advantages

Since there is no installation involved, you can extract the archive files to any part of the hard disk and directly run Git. There is also the option to save it to a USB flash disk or other removable storage unit, in order to launch it on any PC easily and without previous installers.

Worth mentioning is that, unlike most installers, Portable Git does not add new entries to the Windows registry or Start menu, thus leaving no traces behind after its removal.

Rich and simple-to-activate commands

Due to the fact that Git is a console application, all its options are accessible from a Command Prompt window. Thus, it is possible to add file contents to the index, locate changes which introduced bugs via binary searches, list, create and delete branches, record changes to the repository, via commit logs, join together two or more development histories, and many others. A user name and email address can be assigned in order to restrict the access of other users.

Evaluation and conclusion

Git did not cause Windows to hang, crash or pop up error dialogs in our tests. Everything worked smoothly in our testing, and the app had minimal impact on computer performance, using low CPU and RAM. Since this is a complex software utility, Git should be handled by advanced users only.

Альтернативы Git for Windows

На данный момент (начало апреля 2015) «официальная» версия Git для Windows — 1.9.5, в то время как для всех остальных платформ уже доступна версия 2.3.5. Отсюда и естественный интерес к обновлению Git for Windows до актуальной версии или замене его на альтернативный дистрибутив.

После небольшого исследования были обнаружены следующие способы (дистрибутивы) использования Git на платформе Windows.

Git for Windows.

Дистрибутив, предлагаемый на официальном сайте git-scm, основан на проекте MSYS. То есть фактически это портированный на Windows Git плюс некоторое подмножество утилит GNU, необходимое для работы Git.

Из недостатков можно отметить устаревшую версию Git и других GNU утилит. В багтрекере несколько лет висят запросы на обновление утилит (perl, ssh, . ).

Отсутствуют необходимые мне утилиты (rsync, . ). Их приходится заимствовать из проекта MSYS, что не всегда срабатывает (разные версии, иногда несовместимые друг с другом).

В настоящий момент проект переходит на другую базу — MinGW-w64 + MSYS2. Разработчики выложили Developer’s Preview версию, но на момент проверки в ней отсутствовала утилита ssh, да и проблема с добавлением других утилит, похоже, останется. Но GNU утилиты обновились до актуальных, особенно perl.

Подборка утилит от проекта MinGW-builds

Эта сборка была обнаружена практически случайно, в процессе поиска более свежей версии GCC. Содержит все необходимые мне утилиты. Но, к сожалению, уже давно не обновляется.

MSYS2

Узнал, что существует независимый проект MSYS2 из сообщений на багтрекере проекта git-for-windows. Из плюсов:

  • независимый от MSYS проект,
  • использует MinGW-w64,
  • использует портированный с Arch Linux менеджер пакетов Pacman (более стабильный и функциональный, в отличие от поделки mingw-get),
  • свежие версии утилит,
  • присутствует git в пакетах,
  • есть 64-битная версия.

Из минусов, наверное, больший размер при установке по-умолчанию, по сравнению с Git for Windows. Но лишние пакеты можно удалить.

EGit/JGit

Реализация Git от Eclipse (на Java). Есть возможность вызывать из командной строки, но требуется MSYS shell, и это скорее proof-of-concept, чем нормальный способ работы.

SmartGit/Hg

Это тоже собственная реализация Git на Java. Нет нормальной возможности работать в командной строке. А так, отличный инструмент, есть Open Source License.

Читайте также:  Dolby access windows 10 как отключить

libgit2

Очень многообещающий проект. Делается изначально портируемым, реализация на чистом С. Но пока нет проектов, реализовавших всю функциональность Git (GUI + command line) с помощью только этой библиотеки.

Проекты:

  • Git-GUI — альфа версия, нет командной строки.
  • Github for windows — использует Git for Windows для командной строки.

Здесь можно также отметить проект posh-git, но, как я понял, он тоже требует, чтобы Git уже был доступен из командной строки.

Cygwin

В отличие от MSYS, реализует (или пытается) полный слой POSIX для приложений. Мне больше импонирует MSYS подход. При использовании он мне показался более тяжеловесным, по сравнению с MSYS.

Итого

Остановился на MSYS2. Понравилось то, что Git сделан в виде пакета (с зависимостями и пр.), а так же наличие свежих GNU утилит, которые легко установить из пакетов.

Далее будут описаны: замечания, появившиеся в процессе эксплуатации, возможные затруднения и пути их решения.

Установка

1. Скачать 32-bit или 64-bit MSYS2. Да, теперь есть и 64-битный Git, замечания о нём ниже.

В имени папки для установки (и пути) не должно пробелов, и должны быть только ASCII символы (ASCII, no accents, spaces nor symlinks, short path). В дальнейшем я буду ссылаться на эту папку как %MSYS2_DIR%.

После окончания установки запустите MSYS2 Shell (Пуск → Все программы → MSYS2).

2. Установить и обновить пакеты MSYS2 (более детально описано здесь, или здесь с картинками):

Перезапустить MSYS2 Shell и запустить %MSYS2_DIR%\autorebase.bat для 32-битной версии. Далее

3. Настроить HOME

По умолчанию папка HOME создаётся в %MSYS2_DIR%\home\%USERNAME%, и в неё копируются файлы %MSYS2_DIR%\etc\skel, как описано в %MSYS2_DIR%\etc\post-install\05-home-dir.post. Есть возможность настроить папку HOME = %USERPROFILE%. Для этого переместите все файлы из %MSYS2_DIR%\home\%USERNAME% в %USERPROFILE% и исправьте в файле %MSYS2_DIR%\etc\nsswitch.conf строку «db_home: cygwin desc» на «db_home: windows desc»

Если переменная HOME уже есть, то файлы из %MSYS2_DIR%\etc\skel никуда копироваться не будут. При необходимости, скопируйте их вручную, и/или обновите .bashrc и др. файлы.

4. Установить Git

Настройка

1. Для добавления автодополнения (по Tab) команд Git и дополнительной информации в command prompt cкопируйте файлы:

В файл %HOME%\.bashrc добавьте строки

Настройка git-prompt (переменная PS1) взята из предыдущих версий Git for Windows.

Обратите внимание на PS1=»$PS1″$’\n’. Выражение $’\n’ используется для исправления бага

It seems like $() style command substitution for some reason always fails in MSYS2 if a newline is present after it.

Manpages будут установлены пакетом git. Для просмотра понадобится пакет man-db:

И далее, как обычно

Документация в формате Html пока отсутствует

Соответственно, можно попытаться самостоятельно построить её, либо извлечь её из PortableGit архива и скопировать в %MSYS2_DIR%/usr/share/doc/git/html.

Git 32bit vs. 64bit

В процессе эксплуатации 64bit Git обнаружилось повышенное потребление памяти для некоторых команд. Например, git-fast-import при конвертации большого репозитория (порядка 5GiB) легко съедал всю доступную RAM (при отключенном файле подкачки это проявляется в виде системного сообщения о том, что приложению не хватает памяти и предлагается закрыть программу). Для этого же (уже сконвертированного) репозитория TortoiseGit Log не мог отобразить дерево коммитов, а запущенный субпроцесс git опять съедал всю оперативную память.

Для 32bit Git такого не наблюдалось, и все команды, в том числе в связке с различными GUI и IDE работали отлично.

Почему git такой жирный и насколько он в действительности портабелен?

На GNU/Linux и macOS проблем с git нет, кроме веса пакета и неповоротливости на слабом железе, а на венде проблемы ограничиваются этим только на первый взгляд. Если копнуть чуть глубже, окажется, что на самом деле git работает на венде не нативно, а использует MSYS2, который тащит за собой кучу бинарников, раньше так вообще единственным вариантом был cygwin.
Всех устраивает этот вопиющий костыль? Никто не осилил собрать git в той же вижуалстудии? А виноват, скорее всего autotools.
Сейчас глянул несколько клиентов: в большинстве дистрибутивов пакет git в распакованном виде занимает около 35Мб и имеет в зависимостях жирный перл, примерно так же обстоят дела на FreeBSD, Solaris и macOS, официальный же клиент для Windows основан на MSYS2 (форк Cygwin), весит этот клиент более 250Мб, вижуалстудия использует официальный клиент, GitHub Desktop вообще основан на электроне.
Я просто не понимаю, почему нет альтернативных реализаций? Ведь есть же libgit2 — лёгкая и портабельная библиотека! Неужели никто до сих пор не сделал на ней лёгкий и портабельный клиент? Или всех устраивает тяжёлый и неповоротливый?

Читайте также:  Add linux to efi

Какая разница, что вижуал студия использует клиент на 250 метров, если сама она гигов 10 занимает и дико тормозит? Ну и с офф. клиентом у меня лично никогда проблем не было в плане тормозов (хотя использую на слабой виртуалке). Правда я использую только консольную версию.

Так я как раз про консольную версию и говорю. Можно ведь запилить альтернативную версию, которая будет делать всё то же самое, но будет в 10 раз меньше и гораздо быстрее. Только, похоже, этим никто не занимается. Или я гуглить не умею.

Подозреваю, что в основном msys/cygwin используются для тестов (там почти все тесты на bash и его друзьях). perl нужен для перлового модуля Git и для git-svn. Сам git написан на Си, но есть завязки на POSIX API (поэтому git4windows — это отдельный проект, который синхронизируется с основным git периодически).

Не смог найти такой. Нашёл только wingit, но, похоже, это просто старое название официального клиента под Windows.

Git for Windows

Repositories

git-sdk-32

A Git repository mirroring the current 32-bit Git for Windows SDK

0 Updated Apr 18, 2021

git-sdk-64

A Git repository mirroring the current 64-bit Git for Windows SDK

1 Updated Apr 18, 2021

A fork of Git containing Windows-specific patches.

10 Updated Apr 17, 2021

setup-git-for-windows-sdk

A GitHub Action to initialize various flavors of the Git for Windows SDK

0 Updated Apr 16, 2021

get-azure-pipelines-artifact

A GitHub Action that downloads and caches the specified artifact from a given Azure Pipeline

0 Updated Apr 16, 2021

MSYS2-packages

Package scripts for MSYS2.

0 Updated Apr 15, 2021

MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.

1 Updated Apr 14, 2021

build-extra

Additional files and scripts to help build Git for Windows on MSYS2.

5 Updated Apr 14, 2021

rss-to-issues

create issues from a syndication feed (RSS or Atom).

0 Updated Apr 8, 2021

msys2-runtime

Track Cygwin changes from the CVS repository.

2 Updated Apr 8, 2021

git-for-windows.github.io

Git for Windows’ home page

1 Updated Apr 5, 2021

busybox-w32

WIN32 native port of BusyBox. For additional information and binaries see this website.

1 Updated Mar 13, 2021

WinToast

WinToast is a lightly library written in C++ which brings a complete integration of the modern toast notifications of Windows 8 & Windows 10. Toast notifications allows your app to inform the users about relevant information and timely events that they should see and take action upon inside your app, such as a new instant message, a new friend r…

Оцените статью