MsysgitとCygwin + gitの違いは何ですか?
今はmsysgitを使用していますが、Git Bashは好きではないので(サイズ変更もコピー/貼り付けもできません)、Cygwinに切り替えることを考えています。これは mintty =。
2018を編集:
私の2010-2012-2014の回答以来、2015年のGit for Windowsでは、msys2を使用しています 詳細はこちら 。
詳細については、「 msys、msys2、およびmsysgitは相互にどのように関連していますか? 」を参照してください。
編集(あと2年後:2014年10月)
Johannes Schindelin説明済み (2014年10月)そのmsysgitは段階的に廃止されます:
これで、Windows SDK用の軽量Gitができました。これは、本質的には、パッケージマネージャーmingw-getによって管理される標準のMinGW/MSysシステムです。
「msysGit」という名前(および 同じ名前のGitHub org )を段階的に廃止することにしました。
- Git for Windows ( 対応するGitHub org)を使用) 、
- 「エンドユーザー」向けのインストーラには、「Git for Windows」という名前を使用し、
- 「Git for Windows SDK」という名前を使用して、Git for Windows開発者を対象とした開発環境を作成します)。
2年後の更新:2012年7月
Msysgitはここにあり、あなたがneedを cygwinに数百MBを追加 しない限り、Gitを使用するだけでCygwinを必要としませんWindowsの場合。
そしてGitHubにアクセスしたい場合、 GitHub for windows を使用して1つのパッケージ(「Git for Windows」+ GitHubアカウントに登録されたsshキー+ Nice GUI)を取得します。
Git と msysgit の両方がGitHubにあります。
msysgit.github.com ページは、以下の違いを明確に示しています。
_<---------->
_
"Git for Windows":Gitの純粋なユーザー| "MsysGit":テスター、開発者、カスタムインストーラのメンテナ向け
参照 msysgit FAQ :
「MSysGit」のこの「MSys」とは何ですか?
MSysは、UnixタイプのシェルとPerlインタープリターを提供するWindows用の環境です。 Gitの多くの部分はまだCでプログラミングされたビルトインではなく、代わりにシェルおよびPerlスクリプトなので、Git for Windowsにはそのような環境が必要です。
そのため、非常に最小限のバージョンのMSysでGit for Windowsを出荷しています。
GitのビルドにはMSysも必要です。これは、Gitが使用するアップストリームと同じUnixタイプのセットアップを再利用するためです。ビルド環境として、GCCを含むより完全なMSys環境を出荷します(したがって、「msysGit」というニックネームが付いています)。
ただし、Gitを純粋な MinGW プログラムとしてコンパイルします。つまり、標準のWindowsライブラリ以外にはリンクに依存しないプログラムです。
そのため、シェルまたはPerlスクリプトとしてのみ実装されているGitの部分を使用する必要がない限り、プレーンなgit.exeを実行することで回避できます。
元の回答:2010年6月
a /他のWindowsシェルと同様に、Git bashでサイズを変更してコピーアンドペーストできます。
b /おそらく、msysgitではなく「Git for windows」を使用しています。 ウィキ から:
- msysGitは、Git for Windowsをコンパイルするための開発環境です。 msysGitをインストールするだけでGitをビルドできるという意味で、これは完全です。サードパーティのソフトウェアをインストールする必要はありません。
- Git for Windowsは、Git-およびGitのみをインストールするインストーラーです。
違いは簡単にわかります。
- gitのインストーラーにはGit-というプレフィックスが付いています。
- msysGitインストーラーには、プレフィックスmsysGit-が付いています。
もう1つの告知は、msysGitインストーラーには、fullinstallとnetinstallの2つのフレーバーがあることです。
さらに、msysGitはデフォルトでは_C:\Program Files
_にインストールされません。
しかし、msysGitにはgcc
、GNU Cコンパイラが付属しています。
c/ MSysGitHerald1 から:
覚えておいてください:
- MinGWは、Microsoftランタイム上の非常に薄いコンパイル時レイヤーです。したがって、MinGWプログラムは実際のWindowsプログラムであり、Unixスタイルのパスや
fork()
呼び出しなどのPOSIX機能の概念はありません。- 対照的に、MSysはCygwinのスリム化されたバージョン(当時は古いバージョン)であり、その唯一の目的は、bashを実行するのに十分なPOSIXレイヤーを提供することです。
そしてそれは 常に歓迎されるわけではない :
Windowsで作業しているとき、名前が示すようにmsysGitはMSYSとUnixの世界のツールに依存しているのが嫌いです。 Gitディストリビューションのすべてのプログラムは、特定のプラットフォーム用にコンパイルされたバイナリーになり、シェルインタープリターやTcl/Tkなどのサードパーティ言語に依存しないようにする必要があると思います。
それでも、2007年の最初の Git on Cygwin インストールよりははるかに優れています。
これは2017年からの回答です...
基本的な技術的な違いは、すべてのcygwinプログラムがcygwin1.dllに依存していることです。しかし、それは同時に、ほぼ完全に透過的である必要があるため、エンドユーザーにとって最も興味深いものではありません。私が見つけた主な違いはgitのバージョン間ではなく、cygwin環境とmsys/mingw環境の間です。これらは私が見つけたいくつかの違いです:
-noacl
オプションを使用してマウントします。 Cygwinでもそれを行うことで、これらの問題を回避できるようです。git status
は、cygwinでは4.7秒、msys gitでは0.4秒かかります。 cygwin互換性レイヤーのどの部分が物事を遅くしているのかわかりません-ロック、フォーク、ファイルシステム、IPC ...それらはすべて候補です。cygpath
を使用してファイル名を入念に変換する必要があります。これは、スクリプトなどがWindowsプログラムとやり取りするときに重要な役割を果たします。編集:いくつかのマイナーな調整で、cygwinとMsys2の間でgitの(gitだけでなく)共通の設定を共有できることはおそらく明らかではありません。私が正しく覚えているなら、Windowsシステム設定でHOME環境変数を設定するのが良い方法です。次に、Msys2とcygwinの両方がそのディレクトリを使用するため、~/.gitignore
を含め、同じドットファイルが使用されます。これにより、cygwinとMsys2端末間の切り替えが非常に簡単になります(~/.inputrc
、~/.bashrc
、~/.profile
...と考えてください)。
cygwin + gitは、その日にgitを動作させる唯一の方法でした。 msysgitが使用できるようになったので、cygwinを使用する理由は何もありません。
Git bashはそれほど良くないことに同意します。
MSysGitには非常に古いバージョンのSSHが付属しています。私のシステムのスループットは約10メガビットでした。クローン速度を気にしなくても、影響はありません。修正は、Cygwin Gitまたは MSysGitにインストールされているSSHを置き換える を実行することです。
Cygwin上のgitの現在のバージョンは1.7.5.1であり、これは非常に最新です(2011年5月)。
私はmsysgit(別名 "Git for Windows")を試してみることを考えています(現在のところバージョン1.7.4)。
Msysgitのbash実装は古いです。しかし、私は編集時にvimを使用し、それはうまくいきます。切り取りと貼り付けについては、Shift + Alt + [スペース]、E、Mなど、必要なテキストをマークするためのキーを使用することがよくあります。理想的ではありませんが、あまりカットアンドペーストしないので、十分に機能します。
VirtualBoxを介して同じマシンでUbuntuの実行を開始しました。シームレスモードと共有フォルダーにより、最新のbashと高速なGitを利用できます。
必要に応じて、履歴を視覚化するためにgitk(gitk --allの場合)以外のGitのGUIツールを使用していません。
私はcygwinを試してみましたが、気に入りませんでした。仮想ボックスソリューションは、msysgitで十分ではない場合、はるかに優れています。
Git bashでgitコマンドだけを実行する予定がない場合は、Cygwinとgitを併用することをお勧めします。
Git bashでgitコマンド以外は何もしないことを計画している場合は、a)確かに、git bashを使用しますが、b)なぜGit GUIを使用しないのですか?
Git bashはそれほど悪くありませんが、Cygwinを使用してgit bashで機能しない場合があります。 (たとえば、Perl CPAN。別のXSLツール。)まったく異なる2つのbashコマンドライン実装を使用する必要があるのは、ばかげています。
Msysgitは、ファイルシステムの大文字と小文字の区別、ファイルのロックなど、Windows固有の問題に対処するための多数のパッチを受け取っています。cygwinバージョンを使用することはおそらくお勧めできません。システムにcygwinがある場合は、gitをインストールしないことをお勧めします。できれば、同じPATHからmsysgitまたはcygwin環境を共有しないことをお勧めします。
cygwinはローカルファイルをWindows形式で表示しますが、git-bashはそれらをUNIX形式で表示します。 git-bashでファイルをチェックアウトしてからcygwinシェルでgit statusを実行すると、gitはリポジトリのすべての行を変更したと見なし、git-bashシェルでgit statusを実行すると、変更したファイルのみが変更されます。
これは2018年からの回答です...
Git for Windows は MSYS2 に基づいています。
MSYS2は、MSysプロジェクトを再起動し、Cygwinで頻繁に更新し、MSysの精神を維持して、本質的に最小限のCygwinのPOSIXレイヤーを提供するというアイデアから始まりました。 MSYS2はパッケージマネージャー(pacman)も備えており、これらのパッケージを最新の状態に保ちます。
..
MSYS2のランタイムは、Windowsカーネル上で実行される、ストリップダウンしたわずかに変更されたCygwinランタイムですが、Linuxのランタイムは、完全に独立したOSとして実行されるLinuxカーネルです。
https://github.com/git-for-windows/git/wiki
Cygwinは、必要に応じてPOSIX互換性レイヤーを提供するcygwin1.dllと呼ばれるランタイムライブラリを提供します。このライブラリのMSYS2バリアントはmsys-2.0.dllと呼ばれ、ネイティブWindowsプログラムの使用をサポートするための次の変更が含まれています。 MSYS2とCygwinの違い