web-dev-qa-db-ja.com

WindowsでのGit:MSYSまたはCygwin?

私は自分のプロジェクトをgitに移行することを計画していますが、現在、Windowsでどのオプションが最適で最も安定したオプションであるかを考えています。

私が収集したものから、基本的に2.5のオプションがあります:

  1. MSYSgit
  2. Cygwin の下のgit
  3. (別名2.5)CygwinプロンプトからのMSYSgit(Cygwin gitが既にインストールされている場合)。

注:MSYSgit bashを使用すると、これらのツールのかなり小さなサブセットにしかアクセスできないので、IMO Cygwin自体は、ほとんどすべての* nixコマンドラインツールにアクセスできるため、大きなプラスになります。

その場合、どのオプションを提案しますか?

80
joce

編集(さらに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」という名前を使用します)。


編集(3年後:2012年4月)

MsysGit(現在 GitHub )は、Gitの世界で軽量で高速な起動が必要な場合に使用する方法です。アーカイブを解凍し、 git-cmd.bat または git-bash.bat これで完了です。
その 最新リリース(1.7.10、2012年4月) には TF-8のサポート が含まれ、 GitExtensionに含まれます も含まれます。ただし、 autocrlfをfalse に設定することを忘れないでください。

Msysgitのパッケージではなく、他のすべてのUNIXコマンドが本当に不足している場合は、「Cygwinの軽量な代替」という適切な名前の GoW(Windows上のGnu) のリリースをダウンロードしてください。
意味: 13 unix command s ...

Cygwinは、 large Gitリポジトリーの転送速度など、特定の場合にのみバックアップソリューションにする必要があります。これについては、 incrementor in 彼の答え で説明します。


2012年6月:GitHubとやり取りしたい場合は、http://windows.github.comを使用できます(「 Windows用GitHubの設計 」も参照)。
sshキーを構成する(およびGitHubプロファイルに生成された公開キーを追加する)だけでなく、すべてのgit操作に対して、... MsysGitもインストールします。


元の回答(2009年4月)

MsysGitの最新バージョンには問題ありません。
オプション2 を使用します。つまり、git\binディレクトリをPATH環境変数に追加するだけですが、組み込みのWindowsツールをオーバーライドすることはありません。

Notepad ++WinMerge(またはDiffMerge) のような外部ツールを定義できました

MsysGit1.6.2 +からは 'git svn'コマンドが含まれているため、 svn2git のようなスクリプトを正常に実行しました。

そして最後に、MsysGit1.6.2.3を楽しみにしています 最終的に 'git filter-branch'コマンドを含む ! (フィルターブランチの遅いバージョンですが、それでも)。

Unixコマンドの場合、 GnuWin32 coreutilsパッケージ をインストールし、必要な場合にのみ使用することを好みます。

したがって、全体として、私はCygwinレイヤーを使用せず、WindowsベースのリリースMsysGitでGitを非常にうまく実行できました。

60
VonC

はい。古い質問。新しい答え:

現在、大規模な展開で約2年間MSYSgitを使用しています。ローカルgitリポジトリサーバーからの転送速度は5 MiB/s未満に制限されています。問題の以前の調査は、問題がWindows上にあるMSYS開発者にあったことを示していましたXPおよびWindows 7セキュリティコマンドプロンプト/ bashシェルからの接続を制限します。これは実際には、問題。

Darrell Mozingoのブログ投稿 を発見し、Cygwinインストールのみを使用して大規模(多くのGiB)リポジトリのクローンをテストしました。転送速度は30 MiB/sの範囲でした。問題は、MSYSgitが2007年のアンティークOpenSSHバイナリを使用していることです。

このため、それが修正されるまで、Cygwinへの移行を推奨しています(gitのバージョンは少し遅れていますが)。また、Cygwinの方が安定性が高く、Perlでメモリ不足になる可能性が低いこともわかりました。

15
incrementor

私はgitのMSYSバージョンとCygwinバージョンの両方を使用することに手を出しましたが、本当に正直なところ、どちらの経験も特に良いとは思いませんでした。私はgitがまだWindowsの準備ができているとは思わない。

そうは言っても、MSYSバージョンで見つけた問題の1つは、(非バイナリ)ファイルの行末をUNIXスタイル(改行)からDOSスタイル(キャリッジリターン/ラインフィード)に変換することです。これをバグまたは機能とみなすかもしれませんが、私が見つけた動作を変更する方法はありません。 (編集:設定変数core.autocrlfからfalseへ。ブライアンに感謝します。)

GitのMSYSバージョンであるOTOHには、Xサーバー全体をインストールして実行する場合を除き、cygwinバージョンでは使用できないGUI機能がいくつかあります。 (これを確認してくれたJoceに感謝します。)

私の印象では、MSYSバージョンの方が人気がありますが、それを使用するためにcygwinエコシステムをインストールする必要がないためかもしれません。 (そして、私は同意します、cygwinは非常に便利です。)

個人的には、 Bazaar または Mercurial のいずれかを使用します。どちらもWindows IMOのサポートが優れています。

9
Evan

CygwinとMsys Gitはどちらも、通常のユースケースではかなりうまく機能します。 git-svnなどのスクリプトを使用する場合は、Cygwinの方が適しています。ついにLinuxに飛びついた古いWindowsユーザーとして、Cygwinは大きな恩恵であり、それだけで価値があると断言できます。

ただし、コンテキストは重要です。これらのプロジェクトは何ですか?彼らは誰によって使用されていますか?等。

7
Edward Z. Yang

また、両方の世界(CygWinとMSysgit)をテストしましたが、私の経験では、MSysgit bashにいくつかの欠点があります。 Cygwinが同じgitリポジトリで正常に処理している間、git stashを正常に実行できません。

ただし、詳細な分析はまだ行われていません...

6
PatrikS

現在、TortoiseGitと一緒にMsysgitを使用しています。

MsysGit UIは実際には好みではないので、TortoiseGitのような使い慣れたツールを使用し、コマンドラインで作業するとき(ほとんどの場合)、Msysgitのgitバイナリを使用します

4
Tigraine

Msysgitを推奨します。特に、 Git Extensions :で使用する場合、環境を簡単に設定する方法を提供します:エディター/ diff /マージツール。ユーザーインターフェイスから高度なgit操作を実行できます。

3

古い質問に対する新しい答え...

私はWindows 7のコマンドシェルからgit 1.7.3を使用していますが、非常にうまく機能します。 gitコマンドラインとgit guiを組み合わせて使用​​していますが、どちらも数か月間は正常に動作しています。 Macの開発者をチームに追加したときに悪化したキャリッジリターン/ラインフィードの問題がありましたが、これらは...で解決されました。

core.autocrlf=true
core.safecrlf=false

* nix-y Shellを使用するべきではないと言っているのではなく、単に必要ではないというだけです。

1
yoyo

私は、MSysのcygwin実装で深刻なバグに遭遇しました。いくつかのコマンド、特にリベースは、非常に失敗しやすいものでした。 Cygwinの方がずっと安定していた。

とはいえ、それは1か月前でしたが、その後改善された可能性があります。

1
Alex Gontmakher

Cygwin GitとMsysgitの両方をWindowsで使用しました。 Cygwin + Gitを使用することをお勧めします。 Cygwin 1.7(現在ベータ版)は、git guiとgitkを使用しているときに(少なくとも私にとっては)大きなニュアンスに対処します。 Cygwinの以前のバージョンは、git-guiまたはgitkで何かをするたびに数十個のcmdウィンドウを開くものでした。これは1.7で対処されています。 Cygwinの強力なシェルは、Linuxターミナルの多くの利点ももたらします。

とはいえ、Msysgitはかなり進化しており、Windowsで非常に便利です。しかし、いくつかの問題に直面しました。

権限の問題:Windowsでネイティブに作成されたいくつかのファイルには、Msysgitの使用中に644に変換されたモード755がありました。これは、変更されたファイルとして表示されます。チェックインでこの問題を修正する必要があります。

CRLF:いつもとらえどころのないCRLFは、Windowsで問題を引き起こします。 Msysgitは、変更されたファイルを報告する場合があります。これは、Msysgitのインストール中に「行末を変更せずに残す」(正確なテキストを忘れた)を選択することで修正できます。

デーモン:ええ、Msysgitでgitデーモンをセットアップするのはまだ難しいと思っています。

1
sankara

Windowsには、Cygwinを介してGitを使用するhaveがあるシナリオが1つあります。これは、SVNを期待するSVNサーバーに対してGitを使用する場合です。クライアントバージョンが1.5より高い。 'mergeinfo'引数がない場合にコミットをブロックするSVN事前コミットフックが存在します-'mergeinfo'引数はバージョン1.5以降のSVNでのみデフォルトです。 msysGitの問題は、古いSVNバージョン(1.4.6)に対してビルドされるため、この場合は正常にコミットできないことです。 しかし、CygwinのGitでは可能です。新しいSVNバージョンに対してビルドします。

0
ufo

CygWin に予約があります。Cygwinが押し込みたい他のツールではなく、gitだけが欲しいからです。全然違う。キックのためだけに* nix機能をスラップすることはできません。

問題は、* nixのようなコマンドラインを使用したい場合、Linuxマシンに移動して、代わりにそのコンピューターで作業することです。 仮想コンピューター および リモートデスクトップ 最近では魅力的に動作し、開発者は十分にアクセスできます。

CygWinを使用する正当な理由が本当に必要です。 gitを使用するだけの場合は、代わりに MSysGit を使用することをお勧めします。これは私の好みです。バンドルされているgitkおよびgit-guiツールで非常にうまく機能します。私はmsysgitを使用してEclipseとVisual Studioの両方で作業してきましたが、それは魅力のように機能します。

私が今待っているのは、完全に機能する gitのTortoise clone だけです。

0
Spoike

Push/pull/branchingのような単純なアクションを行いたいだけなら、AtlasianのSourceTreeを試すことができます。 Gitコマンド用の非常にシンプルで明確なUI。しかし、それは短期間です。

コマンドラインgitツールを使用する必要がある場合は、Git for windowsツールを入手してください。 bashスクリプトを調べ始めない限り、これで十分です。

0
thoroc