Mercurial と Git について読んだところならどこでも、通常、Git が Windows での機能が制限されていることを意味する 1 行または 2 行を挿入しています (一部のシェルスクリプトは移植できないためなど)。そして、ほとんどのページは少し古いです。
機能面での Windows 上の Git の制限は何ですか? また、MinGW で Git を実行し、Windows で MSYS を実行する必要がある場合、パフォーマンスに制限がありますか?
Mercurial と Git について読んだところならどこでも、通常、Git が Windows での機能が制限されていることを意味する 1 行または 2 行を挿入しています (一部のシェルスクリプトは移植できないためなど)。そして、ほとんどのページは少し古いです。
機能面での Windows 上の Git の制限は何ですか? また、MinGW で Git を実行し、Windows で MSYS を実行する必要がある場合、パフォーマンスに制限がありますか?
編集:つまり、元の回答を下に書いてから6年後の2016年です。ここ数年、git と mercurial を多用しており、Mac での開発も数年前から行っています。コマンド ラインで git を使用することに非常に慣れ、快適に使用できるようになりましたが、日常業務では Atlassian の SourceTree を使用しています。これは広告ではなく、この回答を更新するためのメモです。SourceTree は二重の抽象化です: git/hg の同じ UI と、Windows/Mac の同じ UI です。プラットフォームやプロジェクトを頻繁に切り替える必要がある場合、これは非常に魅力的です。
Windows で Git のクライアントとサーバーの両方をセットアップするためのガイドを書いたので、何が期待できるかについてかなり良い考えを持っています。また、私のプライマリ リポジトリ (.git
フォルダー) のソースは最大 260 MB であるため、Windows での日常的な Git 作業の簡単なパフォーマンス テストではありません。
私の一般的な印象は、Windows 上の Git は、遭遇する可能性が高い大部分の状況で非常に高速であるということですが、1 つの非常に大きな例外がありますgit gui blame -C -C
。デフォルトでは、git はファイル名変更の境界を超えたファイルを非難しません-C -C
。それを可能にするために追加の引数を渡す必要がありますが、そうすると処理が本当に遅くなる可能性があります。最新のハードウェアでは、約 20 kloc の大きなソース ファイルの 1 つの完全な注釈を生成するのに 17 分かかります。その遅れは本当にあなたの集中力を壊す可能性があります。
私はこれを一度だけ試しましたが、重要なことではありません。私は本当にネイティブソリューションが欲しかった. すべてのアカウントで、cygwin 上の git は十分に機能します。
Frank Li は、今やおなじみの UI を Git の世界に持ち込むという多大な作業を行いました。ほとんどの UI が TortoiseSVN (および TortoiseMerge などの他のツール) から利用可能であったため、TortoiseGit は非常に迅速に起動し、私はこのインターフェイスで多くの作業を行いました。一般に、TortoiseSVN に慣れていれば、Git をすぐに使い始めることができます。開発者は、TortoiseSVN の世界から用語を使用し、それらを git コマンドにマッピングするために多大な労力を費やしました。たとえば、元に戻すと、内部で実際に実行git checkout <file>
されます。
一般に、この方法で Git を操作することは非常にシームレスであり、TortoiseGit インターフェースを使用しながら Git を学んだことを認めなければなりません。これが私の教育の妨げになったことを認めなければなりません。TortoiseSVN のようなログ ビューアーは、分散型 vcs ワークフローでは実際には機能しません(SVN のように Git を使用すれば十分に機能します)。 、多くの開発ブランチ (gitk
ツールは非常にこの表示の処理が得意です)。もう 1 つの問題は、TortoiseGit を何ヶ月も使用した後でも、最も基本的な git コマンドさえ知らなかったことです。TortoiseGit には何の問題もありません。バグが発生した場合、驚くほど迅速に修正されます。主な問題は、UI の設計上の問題 (おそらく 1 つ以上) のようです。開発の歴史が長いためgitk
にgit gui
開発者が解決した問題、または慣用的な git の使用法に関するより詳しい知識、またはそのようなものです。
MSYSのgit 開発チームは、彼らが行ったすべての作業をわざわざ行ってくれたことに本当に感謝すべきチームであり、彼らのサポートがなければ、mingw git ブランチがメインラインにマージされることさえなかったでしょう。
私は今、msysgit をそのままGit Bashシェルで使い始めました。ここ数週間、唯一の git インターフェイスとして使用しています。私の印象では、最初の学習はより難しいように見えますが、その知識が得られると、他のすべてがより簡単になります. 私の意見では、 このリファレンスは、コマンド ラインで git を学習するための非常に優れたリファレンスの 1 つです。
Windows の Git ユーザーとして言えば、TortoiseGit インターフェースを使って git を使った拡張経験から来ているので、これは私のワークフローの要約であり、必要なものの 95% 以上をカバーしています ( Windows コマンド シェルではなく、すべて Git Bash で ( cmd)):
変更の確認
git ステータス
分岐を切り替える
git checkout some-feature-branch
フェッチ
git フェッチ
ログを表示(シェルからプロセスを&
切り離し、gitk
シェルgitk
が閉じられるのを待たずに次のコマンドを実行できるようにします)
gitk &
コミット: どちらか
単純なコミット:
git commit -a -m "これは私のコミット メッセージです"
複雑な複数の連続コミット:
git GUI
ブランチへのプッシュ: マスター
git push オリジンマスター
マージ(例: フェッチ後)
gitマージオリジン/マスター
まだ競合の解決を行う必要はありませんが、その時が来たら解決します (コメントを歓迎します :)。
編集: 競合の解決には、kdiff3 が最適です。セットアップは簡単で、単純な差分から 3 方向のマージまで、すべてが確実かつ迅速に機能します。
Windows 上の Git はフル機能を備えており、広告どおりに機能し、Windows に限定されません。
パフォーマンスは一般的に非常に優れていますが、包括的な大規模な Blameは遅くなる可能性があります。
TortoiseGit インターフェースは魅力的ですが、最終的に満足のいくものではありません。コマンドラインで git を学ぶようにしてください。私は両方を行いましたが、このルートの方が効率的です。
疑わしいワイルドカードのサポート:(ファイル
に問題があり.gitignore
ます)
基盤となるOS固有のfnname()
メソッドに送信します:この質問とその質問(またはその質問)を参照してください
git-svnはそれほど速くないかもしれません。
出典:このSO回答。しかし、それはいくつかの良い進歩を遂げました。
競合を防ぐために調整するPATH
必要がある
一部のコマンドは、Windowsとbashで同じです。(find
、、、、...)cp
。
このSOの答えを参照してください。cjrhがコメントしている
ように、GitforWindowsはデフォルトでそのディレクトリをに追加しません。rm
bin
PATH
一部のEOL変換が発生する可能性があります(UnixとWindows EOL) 。設定については、最も信頼のおける推奨事項を
参照してください。
Git1.7.2の新しく改善された属性は、msysgitにはまだありません。git autocrlf
core.eol
eol
(これはおそらく回答というよりはコメントですが、私の担当者はまだそこにいません。)
私も最近同じことを考えていて、あまり掘り下げることができませんでした。ここに 1 つの興味深い議論があります ( Git のウィキペディア エントリの引用を介して発見されました)。
私が知る限り、主な問題はパフォーマンス (特に Cygwin および/または大規模なリポジトリの場合) とファイル システムの問題 (ファイル名の大文字と小文字を区別しない、VFS の制限) です。
純粋に主観的/逸話的:
Git は、同じマシンの Win7 で Cygwin を使用するよりも、Ubuntu 10.04 でネイティブに実行する方がはるかに快適なエクスペリエンスだと感じています。 (とりわけ)。仕事で OSX マシンで Git を学んだので、後で Windows で Git を使用するのはほとんど苦痛でした。msysgit は間違いなく Cygwin よりも優れていますが、それでも Windows ファイル システムの制限に悩まされています。
編集:どうやら、msysgit は、 Linux のような UTF8 対応のファイルシステムを介して git に入力されたファイル名をチョークします。
また、WIP のネイティブ Windows 実装である GitSharpにも偶然出会いました (このブログ コメントで発見)。