windows環境でのgitまとめ(2016.8)

22
Windows環境でのGit (2016.8) 石坂忠広(opcdiary.net)

Upload: tadahiro-ishisaka

Post on 22-Jan-2018

3.927 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Windows環境でのgitまとめ(2016.8)

Windows環境でのGit (2016.8)石坂忠広(opcdiary.net)

Page 2: Windows環境でのgitまとめ(2016.8)

自己紹介

• Windows Gitで検索

• 静岡の方から来ました

• 最近はやっている仕事がよくわかりません

Page 3: Windows環境でのgitまとめ(2016.8)

コマンドラインツール

Page 4: Windows環境でのgitまとめ(2016.8)

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の環境だが、上記の通り若干違いがあるので、混ぜるな危険。

Page 5: Windows環境でのgitまとめ(2016.8)

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

Page 6: Windows環境でのgitまとめ(2016.8)

Bash on Ubuntu On Windows(WSL)

• 長い

• Windows 10 RS1から提供

• Windows Subsytem for Linux上で動くUbuntuの環境(ユーザーランド)

• Windowsを使用する開発者にカジュアルにLinux(Ubuntu)での開発環境を提供する物

•Windowsのユーザー環境にUnixツール環境を提供する機能では無い

Page 7: Windows環境でのgitまとめ(2016.8)

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をインストールする必要性は今はないと考えています。

Page 8: Windows環境でのgitまとめ(2016.8)

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のためだけにインストールする必要は無いと考えます。

Page 9: Windows環境でのgitまとめ(2016.8)

msysGit/Git for Windows(1.9.5以前)

• Git for Windowsの最新版を使えこの野郎。

msysGit、Ver. 1.9.5以前のGit for Windowsは開発中止です。今後セキュリティ的な問題も発生しかねませんし、ssh等もアップデートされませんので、可能な限り最新の2.x環境に移行してください。

もう使わない。

Page 10: Windows環境でのgitまとめ(2016.8)

混ぜるな危険!

• 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が嫌いならそもそも使わなきゃいいじゃん

Page 11: Windows環境でのgitまとめ(2016.8)

GUIツール

Page 12: Windows環境でのgitまとめ(2016.8)

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クライアントの拡張もインストール出来る

Page 13: Windows環境でのgitまとめ(2016.8)

SourceTree

• https://ja.atlassian.com/software/sourcetree/overview/

• Atlassianが公開している無償のGUIツール

• もともとはBitBacketのクライアント的な位置づけでのHgのクライアントだった。

• AtlassianはHgな会社のイメージが強かったのですが、今はすっかりGitの会社ですね(余談)

• Windows版とMac版がある

• Windows/Macでの国内シェアはNo.1なのでは?

• でも私はあんまり好きじゃない。

• Windowsアプリっぽくない

• 自分が共有レポジトリを作ったり、管理する側だっていうのも有る

Page 14: Windows環境でのgitまとめ(2016.8)

GitKraken

• http://www.gitkraken.com/

• タコ猫のような異星人ではなくイカ

• GitHub ElectronベースのGUI Gitクライアント

• axosoftが開発している。

• 本業はプロジェクト管理やチーム協業の支援システム(サービス)を提供している会社

• あれ?どっか同じAから始まる会社と似ている。

• SourceTreeの競合?

• Linuxでも動作する

• 軽量(だと思う)

• Git専用なので、こちらの方が無理が無い気がする

Page 15: Windows環境でのgitまとめ(2016.8)

TortoiseGit

• https://tortoisegit.org/

• TortoiseSVNと同じような操作感

• Explorerで対象を右クリックして、コマンドを選択

• TortoiseMergeが身についてしまった人にとってはGitでも同様に使える

• WordはWordの比較機能を使ってDiff表示ができる(!)

• Explorer拡張として動作する

• コンテキストメニューでのオブジェクト指向的な操作

• ファイルアイコンの拡張

• WordでDIFFをとる場合にWordの比較機能を使用できる

• 途中からlibgit2を使用するようになり、コマンドラインのgit.exeは必ずしも必要では無い

Page 16: Windows環境でのgitまとめ(2016.8)

GitHub Desktop

• GitではなくGitHubのクライアント

• 作業フロー(操作方法や感覚)もGitHubフローに特化している

• Git Flow等他の作業フローでは使いにくいと思う

• GitHubのissue等確認・作成、プルリクエストの作成等できる

• GitHub以外のリモートレポジトリが使えないわけでもないが、使いやすいわけでも無い

• 付属のポータブルGit for Windowsが微妙に古かったり、GitHubのビルドの物だったりで微妙

• 意外とGitHubメインの人でもVSTGと同じような傾向があるので不満があるかも

• あまり深くGitっぽくしないようにGuiの設計をしたり、Guiから発行されるのコマンドを選定していると思う

Page 17: Windows環境でのgitまとめ(2016.8)

Visual Studio Code

• MSが提供しているGitHub Electronベースの高機能エディタ(IDEまではいかない)

• Azure Web Appで使われているオンラインのIDEライクなツールであるMonacoをデスクトップで使用できるようにした感じのもの

• GitクライアントしてはVisual Studio 2015より機能が高い

• ただし、そのために使うというほどGitの機能が高機能なわけではないので注意

Page 18: Windows環境でのgitまとめ(2016.8)

GitExtensions

• 古参のGitのGUIツール

• VS2013までのVSであればVS拡張としても動作

• 内部的にgit.exeをシェル呼び出しするタイプのツール

• コマンドラインに近い操作性(つまり設定項目が多い)

• Explorer拡張としての動作

• 古参故に苦しんでいる感じ

• Git for Windowsのアップデートになかなか追従できていない。

• VS2015に対応できていない。

• 開発が止まっているわけではない。

• http://gitextensions.github.io/

Page 19: Windows環境でのgitまとめ(2016.8)

Tower for Windows

• Macでは有名な有償GUIツールのWindowsへの移植が決まり、Beta参加者を募集中。

• で、何時始まるんだろう。

• 歴史もあり、高機能と言われている。

• SourceTreeと違い、Visual StudioやTFS(両方)のサポートを表明している。

• アメリカのGitユーザーの間で非常に期待が高まっているように見受けられるけれども、そもそも国内のMacユーザーでTowerを使っている人を余り見掛けない(日本語版がないから?)

Page 20: Windows環境でのgitまとめ(2016.8)

Git Gui

• git guiコマンドで起動

• Git for Wiundowsに標準で含まれるGUIツール

• なんだかんだこれで済んでしまうことも多い

• どこにでもある安心感

Page 21: Windows環境でのgitまとめ(2016.8)

まとめ

Page 22: Windows環境でのgitまとめ(2016.8)

で、結局どれを使えばいい?

• コンソール/ターミナルエミュレータを「黒い画面」と恥ずかしくなく言える人

• SourceTree/GitKrakenを使ってください

• 既に作られたGitHubのレポジトリを主に使っている人

• GitHub Desktopを使いましょう

• VSな人はVS拡張で

• OSSのプロジェクトではちょっと考えよう

• 共有レポジトリの作成、運営管理、もしくはプロジェクト/プログラムのリーダー

• 何Guiとか行ってるんですか? Git for Windowsで。

• もちろんGuiツールの併用はあり

• msysGit/Ver. 2.0未満のGit for Windowsは使わない