Windows環境でのGit (2016.1)
石坂忠広(opcdiary.net)
自己紹介
• Windows Gitで検索
• 静岡から来ました
• 最近はSI業が忙しいです
• 富山県人(五百石)と名古屋嬢とのハーフ
• 富山でのお仕事が何故か多いです
• どっかのガスの基地のことを聞かれても話
せなくなりました
• 冬の富山は鱈が美味しい
• 鰤なんか食っている場合じゃない白子食え白子
コマンドラインツール
Git for Windows Ver. 2.x
• 標準的なWindowsでのGitツールセット
• https://git-for-windows.github.io/
• Msys2/mingw-w64ベースでの開発
• msys2から一部コードが変更されている。ただし、ちゃんと追従されている
• Gitだけでなく、基本的な動作に必要なPerl, sshのようなMsys2/MinGuのツール、bash、コン
ソールアプリ(minty)を同梱している。
• GUIセットアップ
• 昨年秋ぐらいに中の人がMS社員になったらしいので、きっと開発が安定する。
• msysGit時代を考えたら非常に早いレスポンスで本体のバージョンアップに追従&バグ修正
• Ver. 2.7.0(2)が最新(2/3時点)
• 開発はGit for Windows SDKをインストールして行う
• 実質的にMsys2/mingw-w64の環境だが、上記の通り若干違いがあるので、混ぜるな危険。
Cygwin
• https://www.cygwin.com/
• CygwinはWindows上にPOSIX/LINUXに近い環境を構築する為の環境です
• 注意点はmsys2での注意点とほぼ同じですが、より厳密に注意してください。
• 以前はだいぶ古いバージョンのGitしか使えませんでしたが、今は最新のGit(Ver. 2.7.0)が
使えます(1/23時点)。
• https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fgit-cvs%2Fgit-cvs-2.7.0-1&grep=git
• Gitの為にCygwinをインストールする必要性は今はないと考えています。
msys2/mingw-w64
• msys2/mingw-w64
• https://github.com/msys2
• msys2はUnixツールとPOSIXとの互換性を持たせるためのライブラリからなる
• mingw-w64はWindows向けgccのツールセット
• Gitのインストールが可能。かつ、Git自体は他のMsys2のアプリケーションと同様基本的に
Windowsアプリケーションなので普通に使えます。
• Gitとしてのインストーラーがあるわけではないので、Gitの為として使用するにはPATH設定や、
コンソール周りの諸々の設定の知識が必要。
• 基本的にUTF-8なコンソールで使用する分にはあまり大きな問題は起きませんが、Windowsの表
順コンソールの日本語の環境(CP932)で日本語のファイル名を使ったり、コミットメッセージを
入力する場合には問題が出る可能性があります。
• 以上Msys2もGitのためだけにインストールする必要は無いと考えます。
Posh-git
• https://github.com/dahlbyk/posh-git
• Gitツール自体では無い
• PowerShell上でGitの操作を補助する
• コマンドの補間
• git ch<tab> --> git checkout
• プロンプトへのgitの状態表示
• 右図
• PSReadLineとの併用がお勧め
• https://github.com/lzybkr/PSReadLine
git ch<tab> --> git checkout
msysGit/Git for Windows(1.9.5以前)
• Git for Windowsの最新版をできるだけ使いましょう
msysGit、Ver. 1.9.5以前のGit for Windowsは開発中止です。今後セキュリティ的な問題も
発生しかねませんし、ssh等もアップデートされませんので、可能な限り最新の2.x環境に
移行してください。
もう使わない。
混ぜるな危険!
• PATHにGit for Windows、msys、msys2、cygwinが混ざるような状況は危険です。
• Ruby InstallerとそのDevKitはmsys2でもなく古いmsysなので、現行のGit for Windowsのbinフォ
ルダやmsys2とPATHが混在していると良くありません。それが原因でGemのインストールに失
敗して悪態をついている人をTLでたまに見掛けます。Rubyの開発環境のPATHには特にmsys2の
各binやGit for Windows SDKの各binのPATHは通すべきではありません。Gitを使いたい場合には
cmdのみPATHに追加します。
• Ruby, Msys2, Git for Windowsを含んだ通常環境と言った具合にそれぞれ別のPATHを通すような
バッチとコンソールアプリの組合せで専用の環境(コンソール)を用意しましょう。
• Cygwinを使いたい人は中途半端にGit for WindowsやRuby Installerは使わずに、それらのツール
は全てCygwinを使うぐらいの気持ちを持ちましょう。PythonやPerl, vim, Emacs等も同様です。
GUIツール
Visual Studio Tools for Git
• Microsoft謹製。
• Visual Studio 2013から一応標準Gitでクライアントが付いた
• Git単独のIDE埋め込みクライアントとしてみると、ステージングがない、リベース弱すぎ、 —no-
ffオプションでmergeする手段が無い等の不満。
• あくまでもTFSのクライアントだという割り切り。
• 心を少し入れ替えて、ステージングやチェリーピック等の対応を次期バージョンで行うらしい
• Visual Studio 2015ではCLIツールのGit for Windowsがインストールされる(オプション)
• リリース時はGit for Windows Version 1.9.5がインストールされる。(メディアに同梱)
• 現在(2016/1/23)時点ではネットワーク環境下でUpdate 1インストール時にインストールされるGit
for WindowsのバージョンはVersion 2.7.0。最新版が提供されるようになった。
• Visual Studio 2015ではGitHubクライアントの拡張もインストール出来る
SourceTree
• https://ja.atlassian.com/software/sourcetree/overview/
• Atlassianが公開している無償のGUIツール
• もともとはBitBacketのクライアント的な位置づけでのHgのクライアントだった。
• AtlassianはHgな会社のイメージが強かったのですが、今はすっかりGitの会社ですね(余談)
• Windows版とMac版がある
• Windows/MacでのシェアはNo.1なのでは?
• でも私はあんまり好きじゃない。
• Windowsアプリっぽくない
• 自分が共有レポジトリを作ったり、管理する側だっていうのも有る
GitExtensions
• 古参のGitのGUIツール
• VS2013までのVSであればVS拡張としても動作
• 内部的にgit.exeをシェル呼び出しするタイプのツール
• コマンドラインに近い操作性(つまり設定項目が多い)
• Explorer拡張としての動作
• 古参故に苦しんでいる感じ
• Git for Windowsのアップデートになかなか追従できていない。
• VS2015に対応できていない。
• 開発が止まっているわけではない。
• http://gitextensions.github.io/
TortoiseGit
• https://tortoisegit.org/
• TortoiseSVNと同じような操作感
• Explorerで対象を右クリックして、コマンドを選択
• TortoiseMergeが身についてしまった人にとってはGitでも同様に使える
• WordはWordの比較機能を使ってDiff表示ができる(!)
• Explorer拡張として動作する
• コンテキストメニューでのオブジェクト指向的な操作
• ファイルアイコンの拡張
• WordでDIFFをとる場合にWordの比較機能を使用できる
• 途中からlibgit2を使用するようになり、コマンドラインのgit.exeは必ずしも必要では無い
GitKraken
• http://www.gitkraken.com/
• タコのような異星人ではなくイカ
• GitHub ElectronベースのGUI Gitクライアント
• axosoftが開発していて、現状招待制のOpen Betaを公開中(1/29時点)
• 本業はプロジェクト管理やチーム協業の支援システム(サービス)を提供して
いる会社
• あれ?どっか同じAから始まる会社と似ている。
• SourceTreeの競合?
• Linuxでも動作する
• 軽量(だと思う)
• Git専用なので、こちらの方が無理が無い気がする
GitHub Desktop
• GitではなくGitHubのクライアント
• 作業フロー(操作方法や感覚)もGitHubフローに特化している
• Git Flow等他の作業フローでは使いにくいと思う
• GitHubのissue等確認・作成、プルリクエストの作成等できる
• GitHub以外のリモートレポジトリが使えないわけでもないが、使いやすいわけでも無い
• 付属のポータブルGit for Windowsが微妙に古かったり、GitHubのビルドの物だったりで微妙
• 意外とGitHubメインの人でもVSTGと同じような傾向があるので不満があるかも
• あまり深くGitっぽくしないようにGuiの設計をしたり、Guiから発行されるのコマンドを選定し
ていると思う
Visual Studio Code
• MSが提供しているGitHub Electronベースの高機能エディタ(IDEまではいかない)
• Azure Web Appで使われているオンラインのIDEライクなツールであるMonacoをデスクトップで
使用できるようにした感じのもの
• GitクライアントしてはVisual Studio 2015より機能が高い
• 何よりステージングのサポートがある
• ただし、そのために使うというほどGitの機能が高機能なわけではないので注意
Git Gui
• git guiコマンドで起動
• Git for Wiundowsに標準で含まれるGUIツール
• なんだかんだこれで済んでしまうことも多い
• どこにでもある安心感
まとめ
で、結局どれを使えばいい?
• コンソール/ターミナルエミュレータを「黒い画面」と恥ずかしくなく言える人
• SourceTree/GitCrakenを使ってください
• 既に作られたGitHubのレポジトリを主に使っている人
• GitHub Desktopを使いましょう
• VSな人はVS拡張で
• OSSのプロジェクトではちょっと考えよう
• 共有レポジトリの作成、運営管理、もしくはプロジェクト/プログラムのリーダー
• 何Guiとか行ってるんですか? Git for Windowsで。
• もちろんGuiツールの併用はあり
• msysGit/Ver. 2.0未満のGit for Windowsは使わない
Windows 10 Insider Previewな皆様へ
• 1月29日20時時点の情報です。
• 最新のIP(14251)ではGit for Windows 2.x以上を使用するとクラッシュします。
• Git for Windows 1.9.5に戻してください。
• GitHub desktop for Windows付属のポータブル版だと動く場合があるようです。
• どうもクラッシュの原因はcURL(とそのライブラリ)っぽいという話もあり。(2/3取り消し線
追加)
• どっちにしろntdll.dllの内部エラーなので、IPの新ビルドが原因です。ドッグフードを食べ
るとお腹を壊すこともあるという事で。ありがとうございました。
• 2/3追記。MS社内ビルドでは改善している模様

Windows環境でのgitまとめ(2016.1)

  • 1.
  • 2.
    自己紹介 • Windows Gitで検索 •静岡から来ました • 最近はSI業が忙しいです • 富山県人(五百石)と名古屋嬢とのハーフ • 富山でのお仕事が何故か多いです • どっかのガスの基地のことを聞かれても話 せなくなりました • 冬の富山は鱈が美味しい • 鰤なんか食っている場合じゃない白子食え白子
  • 3.
  • 4.
    Git for WindowsVer. 2.x • 標準的なWindowsでのGitツールセット • https://git-for-windows.github.io/ • Msys2/mingw-w64ベースでの開発 • msys2から一部コードが変更されている。ただし、ちゃんと追従されている • Gitだけでなく、基本的な動作に必要なPerl, sshのようなMsys2/MinGuのツール、bash、コン ソールアプリ(minty)を同梱している。 • GUIセットアップ • 昨年秋ぐらいに中の人がMS社員になったらしいので、きっと開発が安定する。 • msysGit時代を考えたら非常に早いレスポンスで本体のバージョンアップに追従&バグ修正 • Ver. 2.7.0(2)が最新(2/3時点) • 開発はGit for Windows SDKをインストールして行う • 実質的にMsys2/mingw-w64の環境だが、上記の通り若干違いがあるので、混ぜるな危険。
  • 5.
    Cygwin • https://www.cygwin.com/ • CygwinはWindows上にPOSIX/LINUXに近い環境を構築する為の環境です •注意点はmsys2での注意点とほぼ同じですが、より厳密に注意してください。 • 以前はだいぶ古いバージョンのGitしか使えませんでしたが、今は最新のGit(Ver. 2.7.0)が 使えます(1/23時点)。 • https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fgit-cvs%2Fgit-cvs-2.7.0-1&grep=git • Gitの為にCygwinをインストールする必要性は今はないと考えています。
  • 6.
    msys2/mingw-w64 • msys2/mingw-w64 • https://github.com/msys2 •msys2はUnixツールとPOSIXとの互換性を持たせるためのライブラリからなる • mingw-w64はWindows向けgccのツールセット • Gitのインストールが可能。かつ、Git自体は他のMsys2のアプリケーションと同様基本的に Windowsアプリケーションなので普通に使えます。 • Gitとしてのインストーラーがあるわけではないので、Gitの為として使用するにはPATH設定や、 コンソール周りの諸々の設定の知識が必要。 • 基本的にUTF-8なコンソールで使用する分にはあまり大きな問題は起きませんが、Windowsの表 順コンソールの日本語の環境(CP932)で日本語のファイル名を使ったり、コミットメッセージを 入力する場合には問題が出る可能性があります。 • 以上Msys2もGitのためだけにインストールする必要は無いと考えます。
  • 7.
    Posh-git • https://github.com/dahlbyk/posh-git • Gitツール自体では無い •PowerShell上でGitの操作を補助する • コマンドの補間 • git ch<tab> --> git checkout • プロンプトへのgitの状態表示 • 右図 • PSReadLineとの併用がお勧め • https://github.com/lzybkr/PSReadLine git ch<tab> --> git checkout
  • 8.
    msysGit/Git for Windows(1.9.5以前) •Git for Windowsの最新版をできるだけ使いましょう msysGit、Ver. 1.9.5以前のGit for Windowsは開発中止です。今後セキュリティ的な問題も 発生しかねませんし、ssh等もアップデートされませんので、可能な限り最新の2.x環境に 移行してください。 もう使わない。
  • 9.
    混ぜるな危険! • PATHにGit forWindows、msys、msys2、cygwinが混ざるような状況は危険です。 • Ruby InstallerとそのDevKitはmsys2でもなく古いmsysなので、現行のGit for Windowsのbinフォ ルダやmsys2とPATHが混在していると良くありません。それが原因でGemのインストールに失 敗して悪態をついている人をTLでたまに見掛けます。Rubyの開発環境のPATHには特にmsys2の 各binやGit for Windows SDKの各binのPATHは通すべきではありません。Gitを使いたい場合には cmdのみPATHに追加します。 • Ruby, Msys2, Git for Windowsを含んだ通常環境と言った具合にそれぞれ別のPATHを通すような バッチとコンソールアプリの組合せで専用の環境(コンソール)を用意しましょう。 • Cygwinを使いたい人は中途半端にGit for WindowsやRuby Installerは使わずに、それらのツール は全てCygwinを使うぐらいの気持ちを持ちましょう。PythonやPerl, vim, Emacs等も同様です。
  • 10.
  • 11.
    Visual Studio Toolsfor Git • Microsoft謹製。 • Visual Studio 2013から一応標準Gitでクライアントが付いた • Git単独のIDE埋め込みクライアントとしてみると、ステージングがない、リベース弱すぎ、 —no- ffオプションでmergeする手段が無い等の不満。 • あくまでもTFSのクライアントだという割り切り。 • 心を少し入れ替えて、ステージングやチェリーピック等の対応を次期バージョンで行うらしい • Visual Studio 2015ではCLIツールのGit for Windowsがインストールされる(オプション) • リリース時はGit for Windows Version 1.9.5がインストールされる。(メディアに同梱) • 現在(2016/1/23)時点ではネットワーク環境下でUpdate 1インストール時にインストールされるGit for WindowsのバージョンはVersion 2.7.0。最新版が提供されるようになった。 • Visual Studio 2015ではGitHubクライアントの拡張もインストール出来る
  • 12.
    SourceTree • https://ja.atlassian.com/software/sourcetree/overview/ • Atlassianが公開している無償のGUIツール •もともとはBitBacketのクライアント的な位置づけでのHgのクライアントだった。 • AtlassianはHgな会社のイメージが強かったのですが、今はすっかりGitの会社ですね(余談) • Windows版とMac版がある • Windows/MacでのシェアはNo.1なのでは? • でも私はあんまり好きじゃない。 • Windowsアプリっぽくない • 自分が共有レポジトリを作ったり、管理する側だっていうのも有る
  • 13.
    GitExtensions • 古参のGitのGUIツール • VS2013までのVSであればVS拡張としても動作 •内部的にgit.exeをシェル呼び出しするタイプのツール • コマンドラインに近い操作性(つまり設定項目が多い) • Explorer拡張としての動作 • 古参故に苦しんでいる感じ • Git for Windowsのアップデートになかなか追従できていない。 • VS2015に対応できていない。 • 開発が止まっているわけではない。 • http://gitextensions.github.io/
  • 14.
    TortoiseGit • https://tortoisegit.org/ • TortoiseSVNと同じような操作感 •Explorerで対象を右クリックして、コマンドを選択 • TortoiseMergeが身についてしまった人にとってはGitでも同様に使える • WordはWordの比較機能を使ってDiff表示ができる(!) • Explorer拡張として動作する • コンテキストメニューでのオブジェクト指向的な操作 • ファイルアイコンの拡張 • WordでDIFFをとる場合にWordの比較機能を使用できる • 途中からlibgit2を使用するようになり、コマンドラインのgit.exeは必ずしも必要では無い
  • 15.
    GitKraken • http://www.gitkraken.com/ • タコのような異星人ではなくイカ •GitHub ElectronベースのGUI Gitクライアント • axosoftが開発していて、現状招待制のOpen Betaを公開中(1/29時点) • 本業はプロジェクト管理やチーム協業の支援システム(サービス)を提供して いる会社 • あれ?どっか同じAから始まる会社と似ている。 • SourceTreeの競合? • Linuxでも動作する • 軽量(だと思う) • Git専用なので、こちらの方が無理が無い気がする
  • 16.
    GitHub Desktop • GitではなくGitHubのクライアント •作業フロー(操作方法や感覚)もGitHubフローに特化している • Git Flow等他の作業フローでは使いにくいと思う • GitHubのissue等確認・作成、プルリクエストの作成等できる • GitHub以外のリモートレポジトリが使えないわけでもないが、使いやすいわけでも無い • 付属のポータブルGit for Windowsが微妙に古かったり、GitHubのビルドの物だったりで微妙 • 意外とGitHubメインの人でもVSTGと同じような傾向があるので不満があるかも • あまり深くGitっぽくしないようにGuiの設計をしたり、Guiから発行されるのコマンドを選定し ていると思う
  • 17.
    Visual Studio Code •MSが提供しているGitHub Electronベースの高機能エディタ(IDEまではいかない) • Azure Web Appで使われているオンラインのIDEライクなツールであるMonacoをデスクトップで 使用できるようにした感じのもの • GitクライアントしてはVisual Studio 2015より機能が高い • 何よりステージングのサポートがある • ただし、そのために使うというほどGitの機能が高機能なわけではないので注意
  • 18.
    Git Gui • gitguiコマンドで起動 • Git for Wiundowsに標準で含まれるGUIツール • なんだかんだこれで済んでしまうことも多い • どこにでもある安心感
  • 19.
  • 20.
    で、結局どれを使えばいい? • コンソール/ターミナルエミュレータを「黒い画面」と恥ずかしくなく言える人 • SourceTree/GitCrakenを使ってください •既に作られたGitHubのレポジトリを主に使っている人 • GitHub Desktopを使いましょう • VSな人はVS拡張で • OSSのプロジェクトではちょっと考えよう • 共有レポジトリの作成、運営管理、もしくはプロジェクト/プログラムのリーダー • 何Guiとか行ってるんですか? Git for Windowsで。 • もちろんGuiツールの併用はあり • msysGit/Ver. 2.0未満のGit for Windowsは使わない
  • 21.
    Windows 10 InsiderPreviewな皆様へ • 1月29日20時時点の情報です。 • 最新のIP(14251)ではGit for Windows 2.x以上を使用するとクラッシュします。 • Git for Windows 1.9.5に戻してください。 • GitHub desktop for Windows付属のポータブル版だと動く場合があるようです。 • どうもクラッシュの原因はcURL(とそのライブラリ)っぽいという話もあり。(2/3取り消し線 追加) • どっちにしろntdll.dllの内部エラーなので、IPの新ビルドが原因です。ドッグフードを食べ るとお腹を壊すこともあるという事で。ありがとうございました。 • 2/3追記。MS社内ビルドでは改善している模様