現在(2015年4月上旬)、Git for Windowsの「公式」バージョンは
1.9.5ですが 、バージョン2.3.5は他のすべてのプラットフォームで既に利用可能です。 したがって、Git for Windowsを現在のバージョンに更新すること、またはGit for Windowsを代替ディストリビューションに置き換えることに自然に関心があります。
少し調査した結果、WindowsプラットフォームでGitを使用する次の方法(ディストリビューション)が発見されました。
Git for Windows。
公式の
git-scm Webサイトで提供されるディストリビューションは、MSYSプロジェクトに基づいています。 つまり、実際には、Windows Gitに移植され、さらにGitが機能するために必要なGNUユーティリティのサブセットも移植されています。
欠点としては、Gitの古いバージョンやその他のGNUユーティリティがあります。 数年前から、ユーティリティ(
perl 、
ssh 、...)を更新する要求がバグトラッカーにかかっています。
必要なユーティリティはありません(rsync、...)。 それらは、常に機能するとは限らないMSYSプロジェクトから借用する必要があります(異なるバージョン、時には互いに互換性がない)。
現時点では、プロジェクトは
別のベースに移行しています-MinGW-w64 + MSYS2。
開発者は
Developer's Previewバージョンをアップロードしましたが、検証時にはsshユーティリティが欠落しており、他のユーティリティの追加に関する問題は残っているようです。 しかし、GNUユーティリティは現在のユーティリティ、特にperlに更新されています。
MinGWビルドプロジェクトからのユーティリティの選択
この
アセンブリは、GCCの最新バージョンを見つける過程で、ほぼ偶然に発見されました。 必要なすべてのユーティリティが含まれています。 しかし、残念ながら、長い間更新されていません。
Msys2
git-for-windowsプロジェクトバグトラッカーのメッセージから、独立した
MSYS2プロジェクトがあることを学びました。 プロから:
- MSYS独立プロジェクト
- MinGW-w64を使用し、
- Arch Linuxから移植されたPacmanパッケージマネージャーを使用します(mingw-getハックとは異なり、より安定して機能します)。
- 新鮮なユーティリティ
- gitはパッケージに含まれています
- 64ビットバージョンがあります。
マイナスのうち、おそらくGit for Windowsと比較して、デフォルトでインストールするときのサイズが大きくなります。 ただし、余分なパッケージは削除できます。
EGit / JGit
Eclipseの
Git実装 (Java)。 コマンドラインから呼び出すことは可能ですが、MSYSシェルが必要であり、これは通常の作業方法よりも概念実証です。
SmartGit / Hg
これは、Java
でのGitのネイティブ
実装でもあります。 コマンドラインで作業する通常の機能はありません。 そして、素晴らしいツールであり、オープンソースライセンスがあります。
libgit2
非常に有望なプロジェクト。 最初は移植可能になり、実装は純粋なCで行われます。しかし、これまでのところ、このライブラリのみを使用してGit(GUI +コマンドライン)のすべての機能を実装するプロジェクトはありません。
プロジェクト:
- Git-GUI-アルファ版、コマンドラインなし。
- Github for Windows-コマンドラインにGit for Windowsを使用します。
posh-gitプロジェクトもここに記載できますが、私が理解しているように、Gitがコマンドラインから既にアクセス可能であることも必要です。
シグウィン
MSYSとは異なり 、アプリケーション用の完全なPOSIXレイヤーを実装(または試行)します。 私は、MSYSアプローチにさらに感銘を受けました。 使用すると、MSYSと比べて重く感じられました。
合計
MSYS2で停止しました。 私は、Gitが(依存関係などを含む)パッケージの形で作られているという事実と、パッケージから簡単にインストールできる新しいGNUユーティリティの存在が好きでした。
次に、操作中に表示されたコメント、考えられる困難および解決策について説明します。
設置
1.
32ビットまたは
64ビットの MSYS2をダウンロードします。 はい、現在64ビットGitがあります。これについては以下のメモをご覧ください。
インストールフォルダー(およびパス)の名前にはスペースを含めないでください。また、ASCII文字(ASCII、アクセント記号、スペース、シンボリックリンク、ショートパス)のみを含める必要があります。 将来、このフォルダを%MSYS2_DIR%と呼びます。
インストールが完了したら、MSYS2シェルを起動します(スタート→すべてのプログラム→MSYS2)。
2. MSYS2パッケージをインストールおよび更新します(
ここで詳細を説明
するか
、写真を使用して
ここで説明し
ます )。
pacman -Sy pacman --needed -S bash pacman pacman-mirrors msys2-runtime
MSYS2シェルを再起動し、32ビットバージョンの
%MSYS2_DIR%\ autorebase.batを実行します。 次へ
pacman -Su
3.ホームの構成
デフォルトでは、
%MSYS2_DIR%\ home \%USERNAME%にHOMEフォルダーが作成され、
%MSYS2_DIR%\ etc \ post-install \ 05-home-dir.postで説明されているように、
%MSYS2_DIR%\ etc \ skelファイルがそこにコピーされます。 フォルダー
HOME =%USERPROFILE%を構成することが可能です。 これを行うには、すべてのファイルを%MSYS2_DIR%\ home \%USERNAME%から
%USERPROFILE%に 移動し、ファイル
%MSYS2_DIR%\ etc \ nsswitch.confの行
「db_home:cygwin desc」を
「db_home:windows desc」に修正し ます 。 perl -pi.orig -e "s/db_home:\s+cygwin\s+desc/db_home: windows desc/" nsswitch.conf
HOME変数が既に存在する場合、
%MSYS2_DIR%\ etc \ skelのファイルはどこにもコピーされません。 必要に応じて、それらを手動でコピーするか、.bashrcおよびその他のファイルを更新します。
4. Gitをインストールする
pacman -S git
カスタマイズ
1. Gitコマンドの自動補完(タブによる)および追加情報をコマンドプロンプトに追加するには、ファイルをコピーします。
%MSYS2_DIR%\usr\share\git\completion\git-completion.bash -> %HOME%\.git-completion.bash %MSYS2_DIR%\usr\share\git\completion\git-prompt.sh -> %HOME%\.git-prompt.sh
%HOME%\。Bashrcファイルに行を追加します
. ~/.git-completion.bash . ~/.git-prompt.sh PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]'
git-prompt設定(
PS1変数)は、Git for Windowsの以前のバージョンから取得されます。
PS1 = "$ PS1" $ '\ n'に注意してください。 表現
$ '\ n'は 、
バグを修正するために使用されます
。改行があると、何らかの理由で$()スタイルのコマンド置換がMSYS2で常に失敗するようです。
2.ドキュメント
マンページはgitパッケージによってインストールされます。 表示するには、man-dbパッケージが必要です。
pacman -S man-db
そして、いつものように
man git-add
HTMLドキュメントはまだありません
git help add fatal: '/usr/share/doc/git/html': not a documentation directory.
したがって、自分で
ビルドするか、
PortableGitアーカイブから抽出して、
%MSYS2_DIR%/ usr / share / doc / git / htmlにコピーしてみて
ください 。
Git 32ビットvs. 64ビット
64ビットGitの操作中に、一部のコマンドでメモリ消費が増加することがわかりました。 たとえば、大規模なリポジトリ(5GiB程度)を変換する場合、git-fast-importは使用可能なすべてのRAMを簡単に使用します(ページングファイルが無効になっている場合、これはアプリケーションに十分なメモリがないためプログラムを閉じるように要求するシステムメッセージとして表示されます)。 同じ(既に変換された)リポジトリの場合、TortoiseGitログはコミットツリーを表示できず、実行中のgitサブプロセスが再びすべてのRAMを消費しました。
32ビットGitの場合、これは観察されず、さまざまなGUIやIDEを含むすべてのチームが完全に機能しました。
今のところ、Git 32bitを使用することにしました。