とにかくGit Bash for Windowsとは何ですか?


61

https://git-scm.com/の GitとGit Bashを喜んで使用していますhttps://git-for-windows.github.io/に詳細が記載されたページがあります

昨日、私はで問題に遭遇し、rsyncGit Bash for Windowsを掘り下げ始めました。git-scmダウンロードにバンドルされているだけなので、Bashプログラムの名前すらわからないことに気付きました。私はそれをWindows用のGit Bashと呼んでいますが、これは合理的なようです。

「Git Bashとは」を調べる際にCygwinmysys2と呼ばれる別のものについて読みました。mysys2はに関連してmysysGitいるようMinGWです。しかし、その後、FAQで、minttyがGit Bashのデフォルトのターミナルであることがわかりました

Bashアプリケーションは、実際には、独立して利用可能な他のアイテム(ほとんどが上記にリストされている)の特別にキュレーションされたバンドルのようです。

基本的に、* nixコマンドssh scp cat lsがGit Bash for Windowsで動作するようにする基礎は何ですか?

(良い答えは、誰かが広いストロークでこれらのコンポーネントがどのように組み合わされるかを理解し、コンポーネントの正しい単語を理解するのに役立つと思いますが、SOの質問/回答形式を破りたくありません。)


ここで非常に良い答えが見つかりました:Git Bashの正確な意味は何ですか?
ジェネララ

1
Googleの公式名/物は「git bash」だと思います。両方の単語は独立して意味があるため、引用符で囲むのに役立ちます。
ジェネララ

Redditに関するここここ(2017年以降)での良い議論。彼らは私の元々のrsync質問にも対処します!!
ジェネララ

回答:


72

概要

あなたは、正しいWindows用のGit BashのがちょうどされていないbashWindows用にコンパイル。それの含まれているパッケージbash(あるコマンドラインシェル)等の他、別の* nixのユーティリティのコレクションsshscpcatfindWindows用にコンパイル(あなたがシェルを使用して実行)などと、新しいコマンドラインインターフェース端子と呼ばれるウィンドウmintty

手短に

Windowsでは、あなたは次のようにコマンドを実行する可能性があるipconfig /allか、format G:使用してcmd.exe。これらのコマンドは、下の実際の実行可能ファイルであるC:\Windows\system32として格納され、ipconfig.exeそしてformat.comファイルが。cmd.exe両方から独立しており、ユーザーの要求に応じてそれらをロードして実行します。

sshscpcatfind使用して実行されているbash全く同じように。Windowsと* nixのシステムファイル構造は異なる構造になっているため、通常は* nixシステムで/usr/binはなく下に保存されC:\Windows\system32ます。

Git Bash for Windowsの場合、これらのプログラムはGitインストールフォルダーにあります。C:\Program Files\Git\usr\binこれは、エミュレートされたLinux環境のにもあり/usr/binます。

cmd.exe* nixで実行できるだけで、他のシステムユーティリティなしで多くのことを実行できないように、WindowsでBashを実行できるだけでもあまり役に立ちません。これは、使用可能なソフトウェアパッケージを作成するために、これらすべての追加コマンドをBashにバンドルする必要があることを意味します。

詳細:Windows上のPOSIXアプリケーション

通常、これらの追加コマンドは、Windowsではなく* nixシステムで検出されます。これは、Win32 API(Windowsで使用される)ではなくPOSIXプログラミングAPI(* nixで使用される)に対してプログラムされているためです。POSIX APIドキュメントは公開されているため、一部の人々はWindowsを含む他のシステムに移植しています。POSIX API /ライブラリのWindows実装は、Cygwinおよびによって提供されMSYSます。

これはWineプロジェクトが行うことと似ていますが、WineのようにWindows-> POSIXではなくPOSIX-> Windowsを変換します。

ミント

minttyが含まれているのcmd.exeは、デフォルトのWindowsコマンドラインウィンドウに、ほとんどの* nixシステムで通常利用できるいくつかの重要な機能がないためです。ほとんどの場合、mintty(Git Bash for Windowsパッケージに付属のユーティリティでは)コマンドの実行に適していますが、Windowsシステムアプリケーションはでより適切に動作する場合がありcmd.exeます。


1
私の質問のほとんどは、プロジェクトのFAQ:github.com/git-for-windows/git/wiki/FAQで回答されており、Googleグループgroups.google.com/forum/#でより具体的な情報を見つけることができます。 forum / git-for-windows
ジェネラマ

@geneoramaそれが実際に正しく、有益で、有用であるならば、この答えを受け入れることは問題ではないはずです。
ワレン

1
@geneoramaその空白を埋めることはあなたの意図だったかもしれませんが、それはあなたがした質問ではありませんでした。あなたの投稿のタイトルは「とにかくGit Bash for Windowsとは何ですか?」、そしてその本文にある唯一の質問は、「* nixコマンドssh scp cat lsがGit Bash for Windowsで動作するようにする基礎は何ですか?」です。。Pabruの投稿は両方の質問に非常にうまく答えており、同じ質問(記載されているように)を持っている人にとっては正しい答えです。問題に対する新しい質問を投稿しようとしましたrsyncか?
ワレン

4
@walenがSOや関連サイトに質問を投稿するのは不快なので、これ以上質問を投稿することはできないと思います。これは実際にテストであり、私の気持ちを裏付けました。質問を簡潔に保ち、研究を文書化するために(そして丸1日研究に費やした)私は、実際の質問を省いたと思います。私が注意深く編集するとき、人々は簡潔さを研究の欠如としてとらえているようです。質問を冗長にしすぎると無視されます。何があっても、質問は批判されます(いくつかのまったく失礼なコメントは削除されました)。私の「有名な」質問でさえ、最初はひどく投票されました。
ジェネラマ

1
@geneoramaそれはあなたに慰めの場合、あなたの質問は、答えを読む前に、git bashについての詳細を学ぶのに役立ちました。しかし、私はあなたの意味を理解しています。
ワレン

4

バックグラウンド

私はOPです。私はもともと、私が使っていたこのものの正式な名前を知りたいだけでした。

今、その名前は「Git Bash for Windows」だと思います。残念ながら、このことは実際には多くのことであるため、完全な答えは複雑です。

2016年のトップの回答はもともと役に立たなかったが、大幅に編集され、ますます役立つようになった。それでも、それは私の元の質問の一部を見逃しています。

始まり: msysgit

実際には、始まりはおそらくMSYSですが、実際にはMSYS2。「msysgit」という用語は、XYZが失敗したときに何が起こっているのかを把握するための検索に適した用語です。「@ *#!のすべてのautocrlf設定は保存されていますか?!?!?!?」

msysgitプロジェクトのREADME(https://github.com/msysgit/msysgit)は、コンポーネント間の関係について説明しています。

msysGitGit for Windowsの関係

Git for Windowsは、WindowsでGitを実行するための最小限の環境をインストールするソフトウェアパッケージです。Bash(Unixタイプのシェル)、Perlインタープリター、およびGit実行可能ファイルとその依存関係が付属しています。

一方、msysGitは、Git for Windowsをビルドできるビルド環境をインストールするソフトウェアパッケージです。最も簡単な方法は、ネットインストーラを使用してインストールすることです。

MSYSとMinGWの違い

MinGWのプロジェクトの目標は、GNU Cコンパイラを使用していないPOSIX層でネイティブのWindowsバイナリをコンパイルする方法を提供することです。

ただし、少なくともBashにはPOSIXレイヤーが必要です(特にfork()Windows での呼び出しがないため)。そのため、MSYS(最小システム)がスローされ、WindowsでBash(およびPerl)機能を提供するために必要な最小システムを提供します。

そのため、MSYSにはPOSIXレイヤー(Cygwinの古いバージョンに基づく)が付属しています。これはBashとPerlでのみ使用され、その環境でコンパイルされたものでは使用されません。

ところで、完全なREADMEが削除された場合に備えて、私はそれを要旨にコピーしました。

ターミナルウィンドウ: mintty

Git Bash for windowsの他の部分は、実際のWindowsコマンドラインであるminttyです。ありがたいことに存在しますが、Googleで検索する必要はありません。

MSYS2のリファレンス

彼らのウィキは、MSYS2環境に関する詳細の宝庫です:https : //github.com/msys2/msys2/wiki

はじめに、この部分は私の最初の質問に最も関連しています:

MSYS2は、3つのサブシステムから構成され、それらに対応するパッケージリポジトリ、msys2mingw32、とmingw64

この議論も非常に役立ちます:https : //sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e


1
「その結果、MSysにはPOSIXレイヤーが付属しています(古いバージョンのCygwinに基づいています)...」-これにより、Cygwinにgitをインストールすると「Git Bash for Windows」が冗長になるため、アンインストールするだけで済みます。
ダニエル・ソコロスキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.