プロジェクトをgitに移行する予定ですが、現在、Windowsで最適なオプションや最も安定したオプションはどれか疑問に思っています。
私が収集したものから、基本的に2.5のオプションがあります。
注:IMO Cygwin自体は、ほとんどすべての* nixコマンドラインツールにアクセスできるため、大きなプラスになります。MSYSgitbashでは、これらのツールのかなり小さなサブセットにしかアクセスできません。
それを踏まえて、どのようなオプションを提案しますか?
プロジェクトをgitに移行する予定ですが、現在、Windowsで最適なオプションや最も安定したオプションはどれか疑問に思っています。
私が収集したものから、基本的に2.5のオプションがあります。
注:IMO Cygwin自体は、ほとんどすべての* nixコマンドラインツールにアクセスできるため、大きなプラスになります。MSYSgitbashでは、これらのツールのかなり小さなサブセットにしかアクセスできません。
それを踏まえて、どのようなオプションを提案しますか?
編集(あと2年後:2014年10月)
Johannes Schindelinは、 msysgitが段階的に廃止されると説明しました(2014年10月)。
これで、軽量のGit for Windows SDKができました。これは、基本的に、パッケージマネージャーmingw-getを介して管理される標準のMinGW/MSysシステムです。
「msysGit」という名前(および同じ名前のGitHub org )を段階的に廃止し、 Git for Windows(対応するGitHub orgを使用)で作業し、目的のインストーラーに「GitforWindows」という名前を使用することにしました。 Git forWindows開発者を対象とした開発環境の「エンドユーザー」および「GitforWindowsSDK」で)。
編集(3年後:2012年4月)
MsysGit(現在はGitHubにあります)は、Gitの世界で軽量の高速スタートが必要な場合に使用する方法です。アーカイブを解凍するか、起動するgit-cmd.bat
かgit-bash.bat
、完了です。最新リリース(2012年4月1.7.10)
には、GitExtensionにも含まれているUTF-8のサポートが含まれています。ただし、falseに設定することを忘れないでください。autocrlf
msysgitにパッケージ化されていない他のすべてのUNIXコマンドが本当に不足している場合は、「Cygwinの軽量代替」という名前のGoW(WindowsではGnu)のリリースをダウンロードするだけです。
つまり、130のUNIXコマンド...
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を非常にうまく実行することができました。
はい。古い質問。新しい答え:
MSYSgitは、大規模な展開で約2年間使用されています。ローカルのgitリポジトリサーバーからの転送速度は5MiB/s未満に制限されています。この問題の以前の調査では、MSYS開発者がWindowsXPおよびWindows7のセキュリティでコマンドプロンプト/bashシェルからの接続を制限していることが問題であることが示されました。実際、これは問題ではないようです。
Darrell Mozingoのブログ投稿を発見し、Cygwinインストールのみを使用して大規模な(多くのGiB)リポジトリのクローンをテストしました。転送速度は30MiB/sの範囲でした。問題は、MSYSgitが2007年の旧式のOpenSSHバイナリを使用していることです。
この目的のために、それが修正されるまで、私は現在、Cygwinへの移行を推奨しています(gitのバージョンは少し遅れていますが)。また、Cygwinの方が安定していて、perlのメモリが不足する可能性が低いこともわかりました。
私は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をより適切にサポートしています。
CygwinとMsysGitはどちらも、通常のユースケースでかなりうまく機能します。git-svnなどのスクリプトを使用する場合は、Cygwinの方が適しています。ついにLinuxに飛びついた古いWindowsユーザーとして、Cygwinは大きな恩恵であり、それ自体が持つ価値があると断言できます。
ただし、コンテキストは重要です。これらはどのようなプロジェクトですか?彼らは誰によって使用されていますか?等。
また、両方の世界(CygWinとMSysgit)をテストしました。私の経験では、MSysgitbashにはいくつかの欠点もあります。Cygwinが同じgitリポジトリで正常に処理している間、gitstashを正常に実行できません。
ただし、詳細な分析はまだ行われていません...
私は現在、MsysgitをTortoiseGitと一緒に使用しています。
MsysGit UIは私の好みではないので、TortoiseGitのような使い慣れたツールを使用し、コマンドラインで作業するときは(ほとんどの場合)、Msysgitのgitバイナリを使用します。
msysgitをお勧めします。特にGitExtensionsで使用する場合:環境を構成する簡単な方法を提供します:エディター/差分/マージツール、そしてユーザーインターフェースから高度なgit操作を行うことができます。
私は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デーモンをセットアップするのはまだ難しいと感じています。
MSysのcygwin実装で深刻なバグに遭遇しました。一部のコマンド、特にリベースは、失敗する傾向がありました。Cygwinのものは私にとってはるかに安定していました。
とは言うものの、それは一ヶ月前でしたが、それ以来改善されたかもしれません。
古い質問に対する新しい答え...
私はWindows7のcmdシェルからgit1.7.3を使用していますが、これはうまく機能します。私はgitコマンドラインとgitguiを組み合わせて使用していますが、どちらも数か月間正常に機能しています。キャリッジリターン/ラインフィードの問題があり、Mac開発者をチームに追加すると悪化しましたが、これらは...
core.autocrlf=true
core.safecrlf=false
* nix-yシェルを使用すべきではないと言っているのではなく、必要がないというだけです。
Cygwinだけが必要で、Cygwinが押し込みたい他のツールは必要ないため、CygWinを予約しています。通常、WindowsコンピューターをWindowsコンピューターのように動作させ、CygWinはまったく異なるものを叩きたいのです。キックのためだけに*nix機能を平手打ちすることはできません。
重要なのは、コマンドラインのような* nixを使用したい場合は、Linuxマシンに移動して、代わりにそのコンピューターで作業することです。現在、仮想コンピューターとリモートデスクトップは魅力のように機能し、開発者は十分にアクセスできます。
CygWinを使用する正当な理由が本当に必要です。gitを使用するためだけの場合は、代わりにMSysGitを使用することをお勧めします。これが私の好みです。バンドルされているgitkおよびgit-guiツールで非常にうまく機能します。私はmsysgitを使用してEclipseとVisualStudioの両方に取り組んできましたが、それは魅力のように機能します。
私が今待っているのは、git用の完全に機能するTortoiseクローンだけです。
Windowsでは、Cygwin経由でGitを使用する必要があるシナリオが1つあります。これは、1.5より高いSVNクライアントバージョンを想定するSVNサーバーに対してGitを使用する場合です。'mergeinfo'引数がない場合にコミットをブロックするSVNpre-commitフックが存在し、バージョン1.5以降のSVNでは'mergeinfo'引数がデフォルトになっています。msysGitの問題は、古いバージョンのSVN(1.4.6)に対してビルドされているため、この場合は正常にコミットできないことです。ただし、CygwinのGitは、新しいSVNバージョンに対して構築されているため、可能です。
プッシュ/プル/ブランチングなどの単純なアクションを実行したいだけの場合は、AtlasianのSourceTreeを試すことができます。Gitコマンドの非常にシンプルで明確なUI。しかし、それは近づいています。
コマンドラインのgitツールを使用する必要がある場合は、GitforWindowsツールを入手してください。bashスクリプトを調べ始めない限り、これで十分です。