SlideShare a Scribd company logo
1 of 21
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社内ビルドでは改善している模様

More Related Content

What's hot

ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理H2O Space. Co., Ltd.
 
【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用Reimi Kuramochi Chiba
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみShihomi Katayama
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理Masafumi Yokoyama
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方hibiki443
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話雄也 日下部
 
会社に Github導入した話
会社に Github導入した話会社に Github導入した話
会社に Github導入した話Yutaka Kinjyo
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみたYuto Suzuki
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 

What's hot (20)

ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用【社内勉強会】弊社でGit!実案件での運用
【社内勉強会】弊社でGit!実案件での運用
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
 
会社に Github導入した話
会社に Github導入した話会社に Github導入した話
会社に Github導入した話
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 

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

GameJamでGithubを使おう
GameJamでGithubを使おうGameJamでGithubを使おう
GameJamでGithubを使おうRyouta Morita
 
Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Kazuki Shingai
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LTKouta Imanaka
 
Github Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCIGithub Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCIAtsuki Yokota
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
Git演習(1)
Git演習(1)Git演習(1)
Git演習(1)sono8
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
Introduction git
Introduction gitIntroduction git
Introduction gitMisa Kondo
 
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントGit学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントTakuya Mukohira
 
PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介2bo 2bo
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フローshigetoshi komatsu
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くMisao X
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithublion-man
 

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

gitを1から学ぼう!
gitを1から学ぼう!gitを1から学ぼう!
gitを1から学ぼう!
 
GameJamでGithubを使おう
GameJamでGithubを使おうGameJamでGithubを使おう
GameJamでGithubを使おう
 
Git地図
Git地図Git地図
Git地図
 
Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】Gitごにょごにょ【概要編】
Gitごにょごにょ【概要編】
 
Git超入門
Git超入門Git超入門
Git超入門
 
git-webtouchmeeting
git-webtouchmeetinggit-webtouchmeeting
git-webtouchmeeting
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LT
 
Github Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCIGithub Actionsで始めるROS/ROS2のCI
Github Actionsで始めるROS/ROS2のCI
 
About git
About gitAbout git
About git
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
Git演習(1)
Git演習(1)Git演習(1)
Git演習(1)
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベントGit学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
Git学ぼうぜの会 ハンズオン資料 - LOCAL学生部 GWイベント
 
PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介
 
Git_GiHub講習会.pdf
Git_GiHub講習会.pdfGit_GiHub講習会.pdf
Git_GiHub講習会.pdf
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フロー
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
 
01.app
01.app01.app
01.app
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
 

More from Tadahiro Ishisaka

Visual studioとそのライバル
Visual studioとそのライバルVisual studioとそのライバル
Visual studioとそのライバルTadahiro Ishisaka
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiTadahiro Ishisaka
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門Tadahiro Ishisaka
 
クラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドクラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドTadahiro Ishisaka
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormTadahiro Ishisaka
 
Jazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうJazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうTadahiro Ishisaka
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsTadahiro Ishisaka
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能Tadahiro Ishisaka
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだTadahiro Ishisaka
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価Tadahiro Ishisaka
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Tadahiro Ishisaka
 
エンジニアを現役で続けて行くには
エンジニアを現役で続けて行くにはエンジニアを現役で続けて行くには
エンジニアを現役で続けて行くにはTadahiro Ishisaka
 

More from Tadahiro Ishisaka (19)

Windowsでhaskell
WindowsでhaskellWindowsでhaskell
Windowsでhaskell
 
Visual studioとそのライバル
Visual studioとそのライバルVisual studioとそのライバル
Visual studioとそのライバル
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
クラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドクラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイド
 
Esentのススメ
EsentのススメEsentのススメ
Esentのススメ
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro orm
 
Jazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうJazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょう
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
Sysprep
SysprepSysprep
Sysprep
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ
 
Netduino
NetduinoNetduino
Netduino
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
 
エンジニアを現役で続けて行くには
エンジニアを現役で続けて行くにはエンジニアを現役で続けて行くには
エンジニアを現役で続けて行くには
 

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

  • 2. 自己紹介 • Windows Gitで検索 • 静岡から来ました • 最近はSI業が忙しいです • 富山県人(五百石)と名古屋嬢とのハーフ • 富山でのお仕事が何故か多いです • どっかのガスの基地のことを聞かれても話 せなくなりました • 冬の富山は鱈が美味しい • 鰤なんか食っている場合じゃない白子食え白子
  • 4. 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の環境だが、上記の通り若干違いがあるので、混ぜるな危険。
  • 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 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等も同様です。
  • 11. 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クライアントの拡張もインストール出来る
  • 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 • git guiコマンドで起動 • Git for Wiundowsに標準で含まれるGUIツール • なんだかんだこれで済んでしまうことも多い • どこにでもある安心感
  • 20. で、結局どれを使えばいい? • コンソール/ターミナルエミュレータを「黒い画面」と恥ずかしくなく言える人 • SourceTree/GitCrakenを使ってください • 既に作られたGitHubのレポジトリを主に使っている人 • GitHub Desktopを使いましょう • VSな人はVS拡張で • OSSのプロジェクトではちょっと考えよう • 共有レポジトリの作成、運営管理、もしくはプロジェクト/プログラムのリーダー • 何Guiとか行ってるんですか? Git for Windowsで。 • もちろんGuiツールの併用はあり • msysGit/Ver. 2.0未満のGit for Windowsは使わない
  • 21. 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社内ビルドでは改善している模様