Windowsの下でのGit:MSYSまたはCygwin?


80

プロジェクトをgitに移行する予定ですが、現在、Windowsで最適なオプションや最も安定したオプションはどれか疑問に思っています。

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

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

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

それを踏まえて、どのようなオプションを提案しますか?

回答:


60

編集(さらに2年後:2014年10月)

Johannes Schindelin msysgitが段階的に廃止される説明しました(2014年10月)。

これで、軽量のGit for Windows SDKができました。これは基本的に、パッケージマネージャーmingw-getを介して管理される標準のMinGW / MSysシステムです。

「msysGit」という名前(および同じ名前のGitHub組織)を段階的に廃止し、Git forWindowsで作業することにしました。対応するGitHub組織を使用を使用することにしました。 Git forWindows開発者を対象とした開発環境の「エンドユーザー」および「GitforWindowsSDK」で)。


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

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

msysgitにパッケージされていない他のすべてのunixコマンドが本当に不足している場合は、「Cygwinの軽量代替」という名前のGoW(WindowsではGnu)のリリースをダウンロードするだけです。
というのは: 130 UNIXコマンドS ...

Cygwinは、以下のインクリメンターで説明されているように、大規模なGitリポジトリの転送速度などの特定の場合にのみバックアップソリューションとなる必要がありますます。これ回答述べています


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


元の回答(2009年4月)

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

Notepad ++WinMerge(またはDiffMerge)などの外部ツールを定義することができました

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

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

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

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


私もp4mergeを使用していますが、これはかなりクールです。gitとunicodeのファイル名に問題があることを読みました。
ベンジョール2010年

core.editor設定の質問にリンクしていただきありがとうございます。(-nosessionや-multiInstなどのコマンドラインスイッチでNotepad ++を使用しようとしました)
mbx 2011年

この答えは、なぜ一方を他方の上に使用するのかについては実際には答えていません。IMOの下にもっと良い答えがあります
Sebastien Martin

@SebastienMartinその場合、OP(Joce)にそれを言及する必要があります。そうでなければ、彼は彼が選択すべきより良い答えについて通知されません。
vonC 2012

@SebastienMartinこの古い回答を最新の情報で更新しました。
vonC 2012

15

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

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

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

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


MinGWは2010年のOpenSSH5.4を使用しているようです
Steven Penny

9

私はgitのMSYSバージョンとCygwinバージョンの両方を使用することに手を出しましたが、正直なところ、どちらのエクスペリエンスも特に良いとは思いませんでした。gitはまだWindowsに対応しているとは思いません。

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

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

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

個人的には、BazaarまたはMercurialのどちらかを使用しますが、どちらもWindowsIMOをより適切にサポートしています。


3
Bazaarは、Windows上のGitの問題に対する私の解決策でもありました。ふふ。
インスタンスハンター

9
行末の翻訳をオフにすることができます。core.autocrlfをfalseに設定する必要があります。
ブライアンキャンベル

1
現在、DCVSの選択についてオプションを確認しています。Mercurialがリストにあります。ただし、特に非常に大規模なプロジェクトの場合、分岐のコストはかなりオフになります。Cygwin distにはGUIフロントエンドが付属しています(Xサーバーの実行を犠牲にして)。しかし、それがどれだけの価値をもたらすのか完全にはわかりません。
joce 2009

3
msysバージョンを使用していますが、問題は発生しません。
ikke 2009

2
msysの最新バージョンでは、インストール時に行末の処理方法を構成するように求められていると思います。
ケンリュウ

7

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

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


2
かなり小さなチーム(〜10プログラム)によって開発されたかなり大きなプロジェクト(32K以上のソースファイル)について話しています。それらのすべてが* nix環境に堪能であるわけではありませんが、日常的に使用するためのgitのシンプルさは有望に見えます。また、1つのP4チェンジリスト<=> 1つのgitブランチなどのブランチを頻繁に使用する予定です。その理由だけでも、たとえばgitはHgよりもはるかに興味深いものです。Cygwin対MSYSでの私の恐れは、CygwinバージョンがMSYSバージョンほど最新ではないことです。
joce 2009

6

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

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


4

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

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


3

msysgitをお勧めします。特にGitExtensionsと一緒に使用する場合:エディター/差分/マージツールなどの環境を構成する簡単な方法を提供し、ユーザーインターフェイスから高度なgit操作を実行できます。


1

MSysのcygwin実装で深刻なバグに遭遇しました。一部のコマンド、特にリベースは、失敗する傾向がありました。Cygwinのものは私にとってはるかに安定していました。

とは言うものの、それは一ヶ月前でしたが、それ以来改善されたかもしれません。


3
「MSysのcygwin」?MSysのGitという意味ではありませんか?
joce 2009年

2
@Alex Gontmakherおそらくそれはより安定していますが、死ぬのも遅いです。この記事を参照してください。stackoverflow.com/questions/6724471/...
WinWin

1

私はWindowsでCygwinGitとMsysgitの両方を使用しました。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

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

私はWindows7のcmdシェルからgit1.7.3を使用していますが、うまく機能します。私はgitコマンドラインとgitguiを組み合わせて使用​​していますが、どちらも数か月間正常に機能しています。Mac開発者をチームに追加すると、キャリッジリターン/ラインフィードの問題が悪化しましたが、これらは...

core.autocrlf=true
core.safecrlf=false

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


0

Cygwinだけが必要で、Cygwinが押し込みたい他のツールは必要ないため、CygWinを予約しています。通常、WindowsコンピューターをWindowsコンピューターのように動作させ、CygWinはまったく異なるものを叩きたいのです。キックのためだけに* nix機能を平手打ちすることはできません。

重要なのは、コマンドラインのように* nixで作業したい場合は、Linuxマシンに移動して、代わりにそのコンピューターで作業することです。現在、仮想コンピューターリモートデスクトップは魅力のように機能し、開発者は十分にアクセスできます。

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

私が今待っているのは、git用の完全に機能するTortoiseクローンだけです


そして、2017年3月13日の時点で、Cygwinは2.8.3 gitであり、更新時にPerlの問題が少し発生したようです。Git BashMinGWは2.12です。
マーク

0

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


0

プッシュ/プル/ブランチングなどの単純なアクションを実行したいだけの場合は、AtlasianのSourceTreeを試すことができます。Gitコマンドの非常にシンプルで明確なUI。しかし、それは不足しています。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.