windows環境でのgitまとめ(2016.8)
TRANSCRIPT
Windows環境でのGit (2016.8)石坂忠広(opcdiary.net)
自己紹介
• Windows Gitで検索
• 静岡の方から来ました
• 最近はやっている仕事がよくわかりません
コマンドラインツール
Git for Windows Ver. 2.9.3.2
• 標準的なWindowsでのGitツールセット
• https://git-for-windows.github.io/
• Msys2/mingw-w64ベースでの開発
• Gitだけでなく、基本的な動作に必要なPerl, sshのようなMsys2/MinGuのツール、bash、コンソールアプリ(minty)を同梱している。
• GUIセットアップ
• 昨年秋ぐらいに中の人がMS社員になったらしいので、きっと開発が安定する。
• msysGit時代を考えたら非常に早いレスポンスで本体のバージョンアップに追従&バグ修正
• 開発はGit for Windows SDKをインストールして行う
• 実質的にMsys2/mingw-w64の環境だが、上記の通り若干違いがあるので、混ぜるな危険。
Posh-git
• https://github.com/dahlbyk/posh-git
• Gitツール自体では無い
• PowerShell上でGitの操作を補助する
• コマンドの補間
• git ch<tab> --> git checkout
• プロンプトへのgitの状態表示
• 右図
• PSReadLineとの併用がお勧め
• https://github.com/lzybkr/PSReadLine
• PSReadLineはWindows 10のPSには標準で入っています
git ch<tab> --> git checkout
Bash on Ubuntu On Windows(WSL)
• 長い
• Windows 10 RS1から提供
• Windows Subsytem for Linux上で動くUbuntuの環境(ユーザーランド)
• Windowsを使用する開発者にカジュアルにLinux(Ubuntu)での開発環境を提供する物
•Windowsのユーザー環境にUnixツール環境を提供する機能では無い
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のためだけにインストールする必要は無いと考えます。
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等も同様です。
• そんなにWindowsが嫌いならそもそも使わなきゃいいじゃん
GUIツール
Visual Studio Tools for Git
• Microsoft謹製。
• Visual Studio 2013から一応標準Gitでクライアントが付いた
• Git単独のIDE埋め込みクライアントとしてみると・・・
• あくまでもTFSのクライアントだという割り切り。
• Gitの操作にオレオレTFS用語を当てはめるとか
• 心を少し入れ替えて、Update 3でステージングやチェリーピック等の対応が行われた。
• merge時の—no-ffオプション対応して欲しい
• ソリューション全体のツリービューが欲しい
• Visual Studio 2015ではCLIツールのGit for Windowsがインストールされる(オプション)
• リリース時はGit for Windows Version 1.9.5がインストールされる。(メディアに同梱)
• 現在ではネットワーク環境下では比較的新しいバージョンが提供されるようになった。
• 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アプリっぽくない
• 自分が共有レポジトリを作ったり、管理する側だっていうのも有る
GitKraken
• http://www.gitkraken.com/
• タコ猫のような異星人ではなくイカ
• GitHub ElectronベースのGUI Gitクライアント
• axosoftが開発している。
• 本業はプロジェクト管理やチーム協業の支援システム(サービス)を提供している会社
• あれ?どっか同じAから始まる会社と似ている。
• SourceTreeの競合?
• Linuxでも動作する
• 軽量(だと思う)
• Git専用なので、こちらの方が無理が無い気がする
TortoiseGit
• https://tortoisegit.org/
• TortoiseSVNと同じような操作感
• Explorerで対象を右クリックして、コマンドを選択
• TortoiseMergeが身についてしまった人にとってはGitでも同様に使える
• WordはWordの比較機能を使ってDiff表示ができる(!)
• Explorer拡張として動作する
• コンテキストメニューでのオブジェクト指向的な操作
• ファイルアイコンの拡張
• WordでDIFFをとる場合にWordの比較機能を使用できる
• 途中からlibgit2を使用するようになり、コマンドラインのgit.exeは必ずしも必要では無い
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の機能が高機能なわけではないので注意
GitExtensions
• 古参のGitのGUIツール
• VS2013までのVSであればVS拡張としても動作
• 内部的にgit.exeをシェル呼び出しするタイプのツール
• コマンドラインに近い操作性(つまり設定項目が多い)
• Explorer拡張としての動作
• 古参故に苦しんでいる感じ
• Git for Windowsのアップデートになかなか追従できていない。
• VS2015に対応できていない。
• 開発が止まっているわけではない。
• http://gitextensions.github.io/
Tower for Windows
• Macでは有名な有償GUIツールのWindowsへの移植が決まり、Beta参加者を募集中。
• で、何時始まるんだろう。
• 歴史もあり、高機能と言われている。
• SourceTreeと違い、Visual StudioやTFS(両方)のサポートを表明している。
• アメリカのGitユーザーの間で非常に期待が高まっているように見受けられるけれども、そもそも国内のMacユーザーでTowerを使っている人を余り見掛けない(日本語版がないから?)
Git Gui
• git guiコマンドで起動
• Git for Wiundowsに標準で含まれるGUIツール
• なんだかんだこれで済んでしまうことも多い
• どこにでもある安心感
まとめ
で、結局どれを使えばいい?
• コンソール/ターミナルエミュレータを「黒い画面」と恥ずかしくなく言える人
• SourceTree/GitKrakenを使ってください
• 既に作られたGitHubのレポジトリを主に使っている人
• GitHub Desktopを使いましょう
• VSな人はVS拡張で
• OSSのプロジェクトではちょっと考えよう
• 共有レポジトリの作成、運営管理、もしくはプロジェクト/プログラムのリーダー
• 何Guiとか行ってるんですか? Git for Windowsで。
• もちろんGuiツールの併用はあり
• msysGit/Ver. 2.0未満のGit for Windowsは使わない