web-dev-qa-db-ja.com

msysgitとCygwin + gitの違いは?

MsysgitとCygwin + gitの違いは何ですか?

今はmsysgitを使用していますが、Git Bashは好きではないので(サイズ変更もコピー/貼り付けもできません)、Cygwinに切り替えることを考えています。これは mintty =。

30
why

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はここにあり、あなたがneedcygwinに数百MBを追加 しない限り、Gitを使用するだけでCygwinを必要としませんWindowsの場合。
そしてGitHubにアクセスしたい場合、 GitHub for windows を使用して1つのパッケージ(「Git for Windows」+ GitHubアカウントに登録されたsshキー+ Nice GUI)を取得します。

Gitmsysgit の両方がGitHubにあります。
msysgit.github.com ページは、以下の違いを明確に示しています。

Git for Windows logo _<---------->MsysGit logo
"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 インストールよりははるかに優れています。

44
VonC

これは2017年からの回答です...

基本的な技術的な違いは、すべてのcygwinプログラムがcygwin1.dllに依存していることです。しかし、それは同時に、ほぼ完全に透過的である必要があるため、エンドユーザーにとって最も興味深いものではありません。私が見つけた主な違いはgitのバージョン間ではなく、cygwin環境とmsys/mingw環境の間です。これらは私が見つけたいくつかの違いです:

  • ACL処理。新しい(ポスト2015)cygwinsがNTFSアクセス制御リストを処理する方法は、危険なほど煩わしい場合があります。デフォルトでは、Windowsドライブはaclオプションをアクティブにしてマウントされます。 Cygwinは、ネイティブのWindowsプログラムを介したアクセスを不可能にする方法でACLエントリを再シャッフルおよび悪用することにより、POSIXアクセス許可を模倣しようとします。さらに、ユーザーとアクセス許可の決定には各ファイルのドメインサーバークエリが必要になる可能性があるため、ネットワークアクセスが原因で、マルチユーザーマルチドメイン(つまり、商用または組織)のインストールでは、ファイルアクセスが劇的に遅くなる可能性があります。

    msysは、デフォルトで-noaclオプションを使用してマウントします。 Cygwinでもそれを行うことで、これらの問題を回避できるようです。
  • 速度。私は現在100kファイルのリポジトリで作業しています(質問しないでください)。キャッシュ内の関連するすべてのディスクコンテンツを含むgit statusは、cygwinでは4.7秒、msys gitでは0.4秒かかります。 cygwin互換性レイヤーのどの部分が物事を遅くしているのかわかりません-ロック、フォーク、ファイルシステム、IPC ...それらはすべて候補です。
  • 潜在的にファイル名。私は問題を調査していませんが、Windowsをターゲットとするgit(および他のツール)(msys gitなど)がWindowsファイル名をより適切に処理できると思います。 cygwinでは、2つの世界の間でcygpathを使用してファイル名を入念に変換する必要があります。これは、スクリプトなどがWindowsプログラムとやり取りするときに重要な役割を果たします。

編集:いくつかのマイナーな調整で、cygwinとMsys2の間でgitの(gitだけでなく)共通の設定を共有できることはおそらく明らかではありません。私が正しく覚えているなら、Windowsシステム設定でHOME環境変数を設定するのが良い方法です。次に、Msys2とcygwinの両方がそのディレクトリを使用するため、~/.gitignoreを含め、同じドットファイルが使用されます。これにより、cygwinとMsys2端末間の切り替えが非常に簡単になります(~/.inputrc~/.bashrc~/.profile...と考えてください)。

4

cygwin + gitは、その日にgitを動作させる唯一の方法でした。 msysgitが使用できるようになったので、cygwinを使用する理由は何もありません。

Git bashはそれほど良くないことに同意します。

  1. パスにgitを置き、コマンドラインが必要なときにウィンドウコマンドプロンプトを使用する
  2. GitにGUIを設定したい場合のために亀のgitをインストールしておく
4
bwawok

MSysGitには非常に古いバージョンのSSHが付属しています。私のシステムのスループットは約10メガビットでした。クローン速度を気にしなくても、影響はありません。修正は、Cygwin Gitまたは MSysGitにインストールされているSSHを置き換える を実行することです。

2
cmcginty

Cygwin上のgitの現在のバージョンは1.7.5.1であり、これは非常に最新です(2011年5月)。

私はmsysgit(別名 "Git for Windows")を試してみることを考えています(現在のところバージョン1.7.4)。

1
Theoxylo

Msysgitのbash実装は古いです。しかし、私は編集時にvimを使用し、それはうまくいきます。切り取りと貼り付けについては、Shift + Alt + [スペース]、E、Mなど、必要なテキストをマークするためのキーを使用することがよくあります。理想的ではありませんが、あまりカットアンドペーストしないので、十分に機能します。

VirtualBoxを介して同じマシンでUbuntuの実行を開始しました。シームレスモードと共有フォルダーにより、最新のbashと高速なGitを利用できます。

必要に応じて、履歴を視覚化するためにgitk(gitk --allの場合)以外のGitのGUIツールを使用していません。

私はcygwinを試してみましたが、気に入りませんでした。仮想ボックスソリューションは、msysgitで十分ではない場合、はるかに優れています。

1
Adam Dymitruk

Git bashでgitコマンドだけを実行する予定がない場合は、Cygwinとgitを併用することをお勧めします。

Git bashでgitコマンド以外は何もしないことを計画している場合は、a)確かに、git bashを使用しますが、b)なぜGit GUIを使用しないのですか?

Git bashはそれほど悪くありませんが、Cygwinを使用してgit bashで機能しない場合があります。 (たとえば、Perl CPAN。別のXSLツール。)まったく異なる2つのbashコマンドライン実装を使用する必要があるのは、ばかげています。

0
Keith Tyler

Msysgitは、ファイルシステムの大文字と小文字の区別、ファイルのロックなど、Windows固有の問題に対処するための多数のパッチを受け取っています。cygwinバージョンを使用することはおそらくお勧めできません。システムにcygwinがある場合は、gitをインストールしないことをお勧めします。できれば、同じPATHからmsysgitまたはcygwin環境を共有しないことをお勧めします。

0
locka

cygwinはローカルファイルをWindows形式で表示しますが、git-bashはそれらをUNIX形式で表示します。 git-bashでファイルをチェックアウトしてからcygwinシェルでgit statusを実行すると、gitはリポジトリのすべての行を変更したと見なし、git-bashシェルでgit statusを実行すると、変更したファイルのみが変更されます。

0
intotecho

これは2018年からの回答です...

Git for WindowsMSYS2 に基づいています。

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の違い

Dependency Walker Git Bash

0
weberjn