web-dev-qa-db-ja.com

Windows上のmsysgit-もしあれば、私は何を知っておくべきですか?

これは別の 私が尋ねた質問 最近に関連しています。

Msysgitをインストールすると、インストーラーはシステムパスに関連する3つのオプションを提示します。

  1. Windows環境は絶対に変更しないでください。このオプションでは、「bash」シェルを使用してgitを操作する必要があります。

  2. Git\binディレクトリをPATH環境変数に追加しますが、一部の組み込みWindowsツールをオーバーライドすることはありません。仲間のstackoverflow-ianGabe Moothart コメントで私に言った このオプションはいくつかのgit操作を失敗させるでしょう!これらの操作は何ですか?私はそれらについて心配する必要がありますか?

  3. 2と同じですが、いくつかのデフォルトのシステムツールをオーバーライドします。これらのツールは何ですか?ウィンドウのどの部分がそれらに依存していますか?そしてこれは実際に傷つくでしょうか?

システムPATHとは関係のない、別の問題が頭に浮かびました。

プロジェクトディレクトリ内にシンボリックリンクとハードリンクがある場合はどうなりますか? gitはこれらに対処する方法を知っていますか?または、たとえば、あるフォルダが実際にはその親の1つへのシンボリックリンクであるようなディレクトリ構造である場合、無限再帰が発生しますか?

40
hasen

選択したオプションに関係なく、bashを取得します。後者のオプションは、Gitを外部で使用するためのメソッドを追加するだけです。

後者のオプションの場合、msysgitは、一般的なLinuxユーティリティのWindowsビルドをPATHに追加します。これには、findkillsort、およびcplsrm、およびその他約20〜30。

最初の3つ(および同様のもの)の問題は、それらが両方のOSに存在し、それぞれで機能が異なることです。

どちらを使用するかがわかっていれば、大きな試練ではありませんが、一方を期待してもう一方を取得するように開発されたアプリケーションは、確実に適合します。


競合を防ぐために、Gitを期待どおりに機能させながら、セッションに対してのみPATHを調整する単純なバッチスクリプトを作成できます。 (例:readygit.bat

@echo off
setlocal
set PATH=C:\Git\bin;%PATH%
cmd

それに応じてC:\Git\binを調整します。ただし、これを実行して、cmd内でGitを使用してください。

これにより、インストールオプション3を使用して、システムのPATHからC:\Git\binを安全に削除し、Gitを混乱させることなくWindowsアプリの混乱を取り除くことができます。

私は現在、findを含む GnuWin アプリで同様のスクリプトを使用しています。

44

次の点に注意してください。

  • すべてのgitコマンドがまだそこにあるわけではありません。 2009年3月初旬のMSysGit1.6.2:archimport、cvsexportcommit、cvsimport、cvsserver、filter-branch、instaweb、send-email、およびShell。)

  • MSysGit1.6.2までは、git-svnは そこにはありません現在は )でした。
    問題は、git-svnにSubversionのPerlバインディングが必要であり、動的にロード可能なモジュールとしてのみビルドできることでした。また、MSysGitには、動的にロード可能なモジュールをサポートしないPerlバージョンがありました。

  • MSysGitに関するすべての詳細は、 MSysGitHeraldGithub wiki で最もよく説明されています。

9
VonC

Windowsでは(これは他のシステムではそれほど問題ではありませんが、私の非常に謙虚な意見では...)、crlfの問題を十分に認識している必要があり、(最新バージョンのGitでこれを変更していない限り、他のすべてのgitインストールとは異なり、autocrlfはデフォルトで有効になっています(非常に古いバージョンのGitを使用している場合)。

また、最新バージョンのmsysgitを使用しない限り、メーリングリストから正しく思い出せば今週すぐにリリースされますが、リポジトリのサイズは合計で2GBを超えることはできません。

さらに、Windowsは大文字と小文字を区別しませんが、/時々/大文字と小文字を区別します-それを覚えておいてください! (これはgitを必ずしも混乱させることはありませんが、gitリポジトリのユーザーを混乱させる可能性があります)。

最後に、gitはLinuxよりもWindowsの方がかなり遅いですが、(私の限られた経験では)他の方法よりも高速です。

さて、パスについて...

私が間違っていない限り、メインのgitバイナリがパスにあることを確認できるはずです-そしてそのバイナリは他のgitコンポーネントの参照を処理する必要があります...しかし、私はこれをテストしていません。

3
Arafangion

Cygwinプロンプトからgitを実行する場合は、MSYSGitインストーラーがオプション2を提案します。 cygwin環境は、gitの依存関係がPATHにあることを保証します。このオプションを選択した後、Windowsコマンドプロンプトからgitを呼び出すと、gitが依存するunix-yコマンドラインユーティリティがすべて見つかりません。 IIRC、git自体は部分的にbashスクリプトとして実装されています。どの操作が失敗するかはわかりませんが、gitがこのように使用できるとは思いません。

オプション3がオーバーライドするシステムツールのリストはありませんが(インストーラーはfind.exeについて言及しています)、これはバッチスクリプトの忍者である場合にのみ影響します。コマンドラインで、findは、Windowsに付属しているexeではなく、その名前のunixユーティリティを参照するようになりました。ウィンドウ自体に害を及ぼすことはありません。

はさみで実行し、オプション3を選択するだけです:-)

2
Gabe Moothart