41

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

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

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

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

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

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

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

4

5 に答える 5

44

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

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

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

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


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

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

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

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

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

于 2009-03-15T11:02:30.333 に答える
9

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

  • すべての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に関するすべての詳細は、MSysGitHeraldGithubwikiで最もよく説明されています

于 2009-03-15T10:21:21.430 に答える
3

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

また、msysgit の最新バージョン (メーリング リストの記憶が正しければ今週公開予定) を使用しない限り、リポジトリのサイズは合計で 2GB を超えることはできません。

さらに、Windows は奇妙なことに大文字と小文字を区別しませんが、/時々/大文字と小文字を保持します - 心に留めておいてください! (これは必ずしも git を混乱させるわけではありませんが、git リポジトリのユーザーを混乱させる可能性があります)。

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

さて、進路ですが…

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

于 2009-03-09T08:34:05.547 に答える
2

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

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

ハサミで実行して、オプション 3 を選択するだけです :-)

于 2009-03-09T22:34:00.940 に答える
0

WindowsでWindowsGUIを使用し、最初のリポジトリを作成するときは、リポジトリディレクトリに「.git」という名前を入力しないでください。(次に作成し、その下に別の.gitフォルダーを作成します。最終的にそこを見ようと思ったら)ソースが含まれているフォルダーを参照し、そのフォルダーを選択します。リポジトリディレクトリ「.get」が作成されます。

次に、ステージングされていない変更のファイルが表示され、ファイル名の横にある小さなページアイコンをクリックして、ステージングされた変更にファイルを移動します。

そして、間違いなくはさみで実行し、オプション3を選択します。コマンドウィンドウの行から、kill、sort、またはfindを使用する人はもういません。

于 2009-10-22T18:23:23.393 に答える