webdevqa.jp.net

git.cmdとgit.exe-違いは何ですか?どちらを使用する必要がありますか?

Git.cmdは単なるラッパーである(ただし、デフォルトでPATHに追加される)という大まかな考えはありますが、git.exeも同様に機能することがわかり、これを回避するために使用する予定です issue (XP64のchcpに関しては、むしろコメントします)。なんらかの理由でそれはまったくお勧めできませんか?また、そもそもgit.cmdは本当に必要ですか?

注:私が参照しているchcpの問題は、 のようにPATHエントリが欠落していることが原因ではありません。「chcp」は、内部または外部コマンド、操作可能なプログラム、またはバッチファイルとして認識されません。 Windows PCの場合

23
prusswan

_git.cmd_は、現在のバージョンのmsysgit(1.8.0など)には存在しなくなりました。 _git.cmd_は、_git.exe_と呼ばれる新しいラップに置き換えられたラッパーでした。これを実際の_git.exe_と混同しないでください。

%ProgramFiles(x86)%または_%ProgramFiles%_のGitディレクトリを見ると、次の構造が表示されます。

_Git
|-- bin
|   |-- git.exe
|-- cmd
    |-- git.exe
_

ラッパーは、cmd.exeからgitを使用するための環境を適切にセットアップするために、msysgitに長い間存在していました。付属のbashシェルを使用している場合は、git.exeが直接実行されます。

ここで、古いcmdバージョンと新しい実行可能ラッパーを比較できます。

  1. git.cmd
  2. git.exeラッパー

この魔法について心配する必要はありません。msysgitbash環境以外からラッパーを呼び出す必要があることを理解してください。インストーラーのパスにgitを追加すると、追加されるのはGit\cmdディレクトリです。含まれているすべてのユーティリティをシステムパスに追加することはお勧めしません。これは、特に他のmsysまたはcygwinがインストールされている場合に、多くの問題を引き起こす可能性があるためです。最近のメモリで実際に試したことはありませんが、パスにcmdディレクトリとbinディレクトリの両方が配置され、cmdが優先されると思います。

私にとって、新しいgit.exeラッパーには大きな利点が1つあります。それは、gitを呼び出すコードの移植性を高めることです。以前は、gitを呼び出すpythonスクリプトを作成した場合、シェル環境(subprocess.Popen() with _Shell=True_)でコマンドを実行するか、実行する必要がありました。 cmdファイルを明示的に。これで、OSに関係なく、名前として「git」を使用してプロセスを実行できます。これは、WindowsのCreateProcess()がバッチファイルを実行しないためです(_.cmd_はのエイリアスです) _.bat_)、それを実行するには_cmd.exe_を呼び出す必要があります。

26
djs

Msysgitをインストールする場合、3つのオプションがあります。

  1. 1つ目は、PATHに何も置かれず、Git Bashを使用するためにhaveであるということです。

  2. 2つ目はgit.cmdおよびgitk.cmdPATHに追加されるため、Windowsにある他のツールに影響を与えることなく、cmd、Powershell、cygwinなどで使用できます。 ( この git.cmdは、質問に答えるためにこれを行うことができるラッパーです)。

  3. 3番目(私のお気に入り)は、すべてのツールを追加することです、そしてgit.exePATHでこれを使用します。これはWindowsツールに影響し、MSYSに付属しているツールのフルセットを使用できるようになります。

私はいつも3番目のオプションを使用しました。私はそれが私にどのように影響するかを見たことがありません(私はPowershellとpowershellコマンドレットを使用し、標準のWindowsコマンドは使用しません)そのようなもので、Mingw exeを自由に使用したい場合は、3番目のオプションを選択してください。

13
manojlds

git for Windowsインストーラー によると、セットアップ中にパスにgit.exeを追加するオプションがあります。そのオプションを使用しても問題ないはずです。

Option screen to select git.exe

5
Devin M