自己紹介 岩松信洋 (IWAMATSU Nobuhiro) Linux カーネル開発をしています (Renesas SH) U-Boot のSHアーキテクチャメンテナしています Debian の開発に参加しています Debian Maintainer / Debian JP Project Lead

Similar documents
バージョン管理ツールを使い Debian パッケージを管理する - Git 編

Git の基礎勉強 〜Git によるバージョン管理を使う〜

Microsoft PowerPoint - 22_git ppt

TortoiseGit の基礎勉強 〜TortoiseGit によるバージョン管理を使う〜

AWS Deck Template

バージョン管理システム 門 CVS,Subversion, そして Git まで 佐々 洋平 北大 理 宇宙理学 / 神大 理 地球惑星地球流体電脳倶楽部 2008/10/03 神大自然科学総合研究棟 3 号館 507

Copyright (c) 2018, Katsushi Kobayashi. All rights reserved. クレジット : UTokyo Online Education Education コンピュータシステム概論 2018 小林克志 ライセンス : 利用者は 本講義資料を 教育的な

Subversion の基礎勉強 〜Subversion によるバージョン管理を使う〜

要旨 : 医薬品開発における SAS プログラム開発において プログラムだけでなく その実行ログやデータセット 結果等の関連ファイルのバージョン管理を安全に行い 社内で共有する方法として git 及び SPITS を評価 検討した キーワード : SAS プログラム, バージョン管理, 共有, gi

画面 1 どのアプレットを含めるのかを設定する これは Linux カーネルのコンパイルと同様の画面です これを使って どのようなアプレットを含めるのかを設定していきます 例えば Coreutils を選択すると 次のような画面が現れます ( 画面 2) 画面 2 Coreutils を選択した様子

TeX LiveのCIテスティング

東京エリアDebian勉強会 - 第91回 2012年9月度/OSC2012 Tokyo/Fall)

BIGLOBE クラウドホスティング 開発お役立ちパック GitLab 利用マニュアル 1.0 版 (2013 年 7 月 3 日 ) ビッグローブ株式会社 1 Copyright 2013 BIGLOBE. All Rights Reserved

[Unifinity]運用マニュアル

openSUSE Build Service を使ってみよう

Doxygenを用いた効率的な プログラム仕様書の作成

Microsoft PowerPoint - Symposia2013_SourceControl_Furuzono_presentation.pptx

3.2 Linux root vi(vim) vi emacs emacs 4 Linux Kernel Linux Git 4.1 Git Git Linux Linux Linus Fedora root yum install global(debian Ubuntu apt-get inst

Microsoft PowerPoint - AXIES2015_OSS_tokiwa.pptx

実践 Infrastructure as Code

I117 II I117 PROGRAMMING PRACTICE II HASH Research Center for Advanced Computing Infrastructure (RCACI) / Yasuhiro Ohara

TortoiseSVN の基礎勉強 〜TortoiseSVN によるバージョン管理を使う〜

Agenda! 事前準備

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

利用者

Microsoft PowerPoint _2.プログラミングの基礎_final.pptx

ソフトウェアエンジニアリング - 機能 #54

はじめの一歩!ソースコード管理に必要なバージョン管理とは

第5回 マインクラフト・プログラミング入門

PICKIT3オフライン書き込みガイドブック

Microsoft PowerPoint - Tutorial_2_upd.ppt

Crashinfo ファイルからの情報の取得

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の

7th CodeGear Developer Camp

2005 3

+ Octopress + GitHubPages でブログを作成 Name: さりんじゃー

Linux システムの導入と管理 コード L- 0:00~7:00 ( 休憩 含む ) 定員 0 名受講料 ( テキスト代含 ),00 前提条件 UNIX または Linux の基本的操作経験 ( コマンドによるファイル操作 ファイル編集 ) があること 最低開講人数 0 名 Linux システムの

(1/2) 2/45 HPC top runner application programmer PC-9801F N88-BASIC Quick BASIC + DOS ( ) BCB Windows Percolation, Event-driven MD ActionScript Flash

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

MINI2440マニュアル

Solaris 10 10/08 OSにおける統合インストーラの注意事項

スマート署名(Smart signing) BIND 9.7での新機能

1

113_0405.indd

Server Backup Manager 5.0 Debian および Ubuntu システムへの Server Backup Free のインストール 1. APT-GET をしてServer Backup Free をインストールする 2. Server Backup Free のインストール

Microsoft Word Webmail

Microsoft PowerPoint _2.プログラミングの基礎_final

Microsoft Word - Lab6.doc

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Sep) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

Helix Swarm2018.1アップグレード手順

Sharing the Development Database

はじめに このドキュメントではftServerに関する障害調査を行う際に 必要となるログ データの取得方法を説明しています ログ データの取得には 初期解析用のデータの取得方法と 詳細な調査を行うときのデータ取得方法があります 特別な理由でOS 側のログが必要となった場合には RHELログの取得につ

(Part-3) 3 Why? How Who How Worth Part-1? Whom Part-2 When Part-3? What? Which How Much Part-4 summary 2

untitled

Waylandを試してみた 横浜PF部 第31回勉強会

受付代行 設定マニュアル このマニュアルでは 恵比寿ボイスプロダクションが Google アシスタントアプリで公開している 受付代行 ( ) を使って Google

bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows ˆ Windows10 64bit Wi

Raspberry Pi で WEB カメラを使用 会津大学 RT ミドルウェア講習会 2017 The University of Aizu

テクニカルドキュメントのテンプレート

Webhard_Users manual

Welcome-Kit ~STM32L4-Nucleo~

caff と mail-transport-agent - 第156回 2017年10月度 東京エリアDebian勉強会

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

DCL intro Manual for Ubuntu11.10

差分比較とマージ 機能ガイド

debian_install.dvi

2. Save をクリックします 3. System Options - Network - TCP/IP - Advanced を開き Primary DNS server と Secondary DNS Server に AXIS ネットワークカメラ / ビデオエンコーダが参照できる DNS サ

PowerPoint プレゼンテーション

Geant4を使ってみよう

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

Microsoft Word - Lab5d-DB2組み込みSQL.doc

HP Remote Graphics Software Receiver and Sender Installation Guide

<4D F736F F D2096C B838B B835E838A F B E92CA926D B838B5F E315

DHCPサーバのクラスタ化

Tekla BIMsight 1.9.4

X-MON 3.1.0

GNU/Linux on SuperH g,,,,, GNU/Linux on SuperH [1] SuperH (SH-3 SH-4) GNU/Linux g linux-kernel 1998 Linux (SH-3) g GD

第 3 回情報基礎演習 UNIX / Linux: ファイルシステム シェルを理解しよう! 谷口貴志 Panda に login し 情報基礎演習クラスの VDI から Ubuntu に接続し Linux に login した後, 左 上の Activity 端末のアイオン をクリック 端末 を立ち

t20s3-fn09.pdf

Microsoft Word - nvsi_090196_r1_vaultdr_offline_rhel_dualpath.doc

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 7編)

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 6編)

利用者

Javaインストール手順書

Microsoft PowerPoint - スハ?コン利用入門_ _UNIX利用の基礎知識.pptx

1. 対象装置 (1) 日立仮想 Fibre Channel アダプタ 適用装置 : EP8000 7xx 2. 仮想 FC アダプタドライバ来歴 この仮想 FC アダプタドライバは 次の機能拡張とバグ修正を含みます バージョン内容 新規追加 AIX ロ

appli_HPhi_install

FUJITSU Cloud Service for OSS 「GitHub Enterprise」 ご紹介資料

Microsoft Word - RefWorksコース( _.doc

Raspberry Pi3 / arm64 - Debian/Ubuntu ミートアップ in 札幌

Microsoft Word - OL購入補足資料-pdf.docx

練習 4 ディレクトリにあるファイルを直接指定する (cat) cat コマンドを使う (% cat ファイル名 ) と ファイルの内容を表示できた ファイル名のところにパス名を使い ディレクトリ名 / ファイル名 のように指定すると ディレクトリ内にあるファイルを直接指定できる 1 % cat _

debian_manual.dvi

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

プリント

MINI2440マニュアル

GNU_Tools_dwl_Plagin

rndc BIND

Transcription:

Linux カーネル開発者予備軍 のための Git Howto Japan Technical Jamboree 2009/05/12 ( 株 ) ルネサスソリューションズシステムビジネス本部システム推進部第三グループ岩松信洋 1

自己紹介 岩松信洋 (IWAMATSU Nobuhiro) Linux カーネル開発をしています (Renesas SH) U-Boot のSHアーキテクチャメンテナしています Debian の開発に参加しています Debian Maintainer / Debian JP Project Leader 2

今回のお題 Linuxカーネル開発者予軍のためのGit Howto 1.Gitの基本的なコマンド 2.Gitを使った開発の流れ 3. 質疑応答 1. パッチを送るまで 2. 最新機能を試す 3

1. Git の基本的なコマンド 4

Subversion 作業 PC ネットワーク コミット ワーキングコピー リポジトリ チェックアウト ユーザー 編集 コミット権が必要 5

Git 作業 PC ネットワーク index コミット プッシュ ワーキングコピー チェックアウト ローカルリポジトリ フェッチ リモートリポジトリ ユーザー 編集 これはあなたのリポジトリ コミット権が必要 6

Git の基本的なコマンド git clone( リポジトリのコピー ) git add/rm/mv( ファイルの追加 削除 リネイム ) git commit( ローカルリポジトリへコミット ) git diff( 差分の表示 ) git log( コミットログの確認 ) git format-patch( パッチの作成 ) git remote ( リモートリポジトリの管理 ) git rebase/merge ( 間のリベース マージ ) git pull ( リモートリポジトリからコピー マージ ) git branch / git checkout ( の操作 ) 7

Git の基本的なコマンド ワーキングコピー index ローカルリポジトリリモートリポジトリ git clone git diff git add git commit git commit -a git push git pull git branch / git checkout git merge / git rebase 8

2. Git を使った開発の流れ 9

2.1. パッチを送るまで 基本的な考え方 パッチは開発者の最新のコミットに対して修正 を送る カーネルでは 各機能毎にメンテナがいるので メンテナがメンテナンスしているリポジトリに対して修正を行う パッチもメンテナおよび機能毎に用意されているメーリングリストに送る 10

...... 2.1. パッチを送るまで linus crypto net ドライバ アーキテクチャ mtd sh netdev arm sh arm 11

例 ) SH アーキテクチャに関する パッチを送る場合 12

0. 環境の設定 Linux カーネル開発 /Git では 名前とメールアドレスを利用する Git で使う名前とメールアドレスを設定する $ git config -global \ user.name "Nobuhiro Iwamatsu" $ git config -global user.email \ "iwamatsu.nobuhiro@renesas.com" 13

1. リポジトリをコピーする SH アーキテクチャの Git リポジトリは MAINTAINERS ファイルに書いてある SUPERH P: Paul Mundt M: lethal@linux-sh.org L: linux-sh@vger.kernel.org W: http://www.linux-sh.org T: git git://git.kernel.org/pub/scm/linux/kernel/gi t/lethal/sh-2.6.git 14

1. リポジトリをコピーする git clone コマンドでリポジトリをコピー $ git clone \ git://git.kernel.org/pub/scm/linux/kernel/gi t/lethal/sh-2.6.git 15

1. リポジトリをコピーする sh-2.6 リモートリポジトリ 16

1. リポジトリをコピーする sh-2.6 リモートリポジトリ リポジトリをコピー 17

1. リポジトリをコピーする sh-2.6 リモートリポジトリ リポジトリをコピー ローカルリポジトリ origin/ 18

1. リポジトリをコピーする sh-2.6 リモートリポジトリ リポジトリをコピー ローカルリポジトリ origin/ heads/ リモートリポジトリの をローカルとして登録する 19

2. git clone を実行すると sh-2.6 ディレクトリができているので cd する $ ls sh-2.6 $ cd sh-2.6 20

3. 不具合の修正をする $ vi arch/sh/kconfig... edit... $ git diff diff --git a/arch/sh/kconfig b/arch/sh/kconfig index 8d50d52..19566c8 100644 --- a/arch/sh/kconfig +++ b/arch/sh/kconfig @@ -530,7 +530,7 @@ source kernel/kconfig.hz config KEXEC bool "kexec system call (EXPERIMENTAL)" - depends on SUPERH32 && EXPERIMENTAL + depends on SUPERH32 && EXPERIMENTAL && MMU help kexec is a system call that implements the ability... 21

4. ドライバの修正ができたら ソースのチェック コンパイル テストを行う $ make ARCH=sh menuconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-\ -j8 $ 実機でテスト 22

4. 問題がなければ 変更をコミットする $ git commit arch/sh/kconfig -s -s は Signed-off をつけるという意味 git commit 実行すると エディタが立ち上がる 23

4. 問題がなければ 変更をコミットする sh: Add MMU dependency for kexec Kexec is not likely to work on NON-MMU CPU because this added depend on MMU for kexec. $ git commit drivers/net/sh_eth.c -s Signed-off-by: Nobuhiro Iwamatsu \ <iwamatsu.nobuhiro@renesas.com> 1 行目はメールのサブジェクトになる ( 後で説明 ) 空行を入れて 次の行からメールの本文になる 24

4. 問題がなければ 変更をコミットする $ git log commit f36b59d1a4fa1e29be606d0513b5f7fa6e720f79 Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Date: Thu Mar 26 08:32:37 2009 +0000 sh: Add MMU dependency for kexec Kexec is not likely to work on NON-MMU CPU because this added depend on MMU for kexec. $ git commit drivers/net/sh_eth.c -s Signed-off-by: Nobuhiro Iwamatsu \ <iwamatsu.nobuhiro@renesas.com> diff --git a/arch/sh/kconfig b/arch/sh/kconfig index 8d50d52..19566c8 100644 --- a/arch/sh/kconfig +++ b/arch/sh/kconfig @@ -530,7 +530,7 @@ source kernel/kconfig.hz config KEXEC 25

4. 問題がなければ 変更をコミットする sh-2.6 リモートリポジトリ ローカルリポジトリ origin/ heads/ 26

4. 問題がなければ 変更をコミットする sh-2.6 リモートリポジトリ ローカルリポジトリ origin/ heads/ α heads/ にコミットされる 27

5. 修正している間にリモートリポジトリが更新されている可能性があるので リモートリポジトリの状態をアップデートする $ git remote update 28

5. 修正している間にリモートリポジトリが更新されている可能性があるので リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ ローカルリポジトリ origin/ heads/ α 29

5. 修正している間にリモートリポジトリが更新されている可能性があるので リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ heads/ α 30

5. 修正している間にリモートリポジトリが更新されている可能性があるので リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ 3 4 git remote update ローカルリポジトリ origin/ heads/ α 31

5. 修正している間にリモートリポジトリが更新されている可能性があるので リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ 3 4 git remote update ローカルリポジトリ origin/ 3 4 heads/ α 32

6. リモートリポジトリの状態に対して rebase を行う $ git rebase origin git pull -rebase でも可能 ソースコードのマージには 2 種類ある git rebase は指定したをベースに自分の修正を追加するコマンド Git merge は指定したの修正を自分のに追加するコマンド 33

6. リモートリポジトリの状態に対して rebase を行う sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 heads/ α 34

6. リモートリポジトリの状態に対して rebase を行う sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 git rebase origin heads/ α 35

6. リモートリポジトリの状態に対して rebase を行う sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 git rebase origine heads/ 3 4 α 36

6. リモートリポジトリの状態に対して rebase を行う sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 git merge origin/ heads/ α 37

6. リモートリポジトリの状態に対して rebase を行う sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 git merge origin/ heads/ α X 2 3 4 38

7. 再度テスト $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-\ -j8 $ 実機でテスト 39

8. git format-patch コマンドでコミットからパッチメールを作成 $ git format-patch -o../ origin../0001-sh-add-mmu-dependency-for-kexec.patch 40

8. git format-patch コマンドでコミットからパッチメールを作成 $ cat \../0001-sh-Add-MMU-dependency-for-kexec.patch From f36b59d1a4fa1e29be606d0513b5f7fa6e720f79 Mon Sep 17 00:00:00 2001 From: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Date: Thu, 26 Mar 2009 08:32:37 +0000 Subject: [PATCH] sh: Add MMU dependency for kexec Kexec is not likely to work on NON-MMU CPU because this added depend on MMU for kexec. Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> --- arch/sh/kconfig 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/sh/kconfig b/arch/sh/kconfig index 8d50d52..19566c8 100644 --- a/arch/sh/kconfig +++ b/arch/sh/kconfig @@ -530,7 +530,7 @@ source kernel/kconfig.hz... 41

8. git format-patch コマンドでコミットからパッチメールを作成 sh-2.6 リモートリポジトリ 3 4 ローカルリポジトリ origin/ 3 4 heads/ 3 4 α 現在のと origin との差分を出力 42

9. 作成したパッチをメーリングリストに投稿する $ git send-email \ -to linux-sh@vger.kernel.org \ -cc lethal@linux-sh.org \../0001-sh-Add-MMU-dependency-for-kexec.patch 43

2.2. 最新機能を試す 最新のドライバとか 最新の機能とか 試したい事があるというか 試す必要がある場合がある どのようにするか 44

例 ) sh-2.6のリポジトリをベースにしたにbluetoothドライバのコードをマージしてテストをする 45

1. リモートリポジトリを追加する Bluetooth の Git リポジトリは MAINTAINERS ファイルに書いてある BLUETOOTH SUBSYSTEM P: Marcel Holtmann M: marcel@holtmann.org L: linux-bluetooth@vger.kernel.org W: http://www.bluez.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/gi t/holtmann/bluetooth-2.6.git 46

1. リモートリポジトリを追加する git remote コマンドでリモートリポジトリを追加 $ git remote add bluetooth \ git://git.kernel.org/pub/scm/linux/kernel/gi t/holtmann/bluetooth-2.6.git 47

1. リモートリポジトリを追加する sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B ローカルリポジトリ origin/ heads/ 48

1. リモートリポジトリを追加する sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B ローカルリポジトリ origin/ heads/ 49

1. リモートリポジトリを追加する sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git remote add ローカルリポジトリ origin/ heads/ 50

1. リモートリポジトリを追加する sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git remote add ローカルリポジトリ origin/ heads/ bluetooth 51

2. リモートリポジトリの状態をアップデートする $ git remote update bluetooth Updating bluetooth From git://git.kernel.org/pub/scm/linux/kernel/gi t/holtmann/bluetooth-2.6.git * [new branch] -> \ bluetooth/ 52

2. リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git remote update bluetooth ローカルリポジトリ origin/ heads/ bluetooth 53

2. リモートリポジトリの状態をアップデートする sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git remote update bluetooth ローカルリポジトリ origin/ heads/ bluetooth/ 0 A B 54

3.bluetooth の変更を に取り込む $ git branch * $ git merge bluetooth/ Merge made by recursive. Counting objects: 976200, done. Delta compression using up to 4 threads. Compressing objects: 100% (147281/147281), done. Writing objects: 100% (976200/976200), done. Total 976200 (delta 846940), reused 947801 (delta 820079)... 55

3.bluetooth の変更を に取り込む sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git merge bluetooth/ ローカルリポジトリ origin/ heads/ bluetooth/ 0 A B 56

3.bluetooth の変更を に取り込む sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git merge bluetooth/ ローカルリポジトリ origin/ heads/ bluetooth/ A B 0 A B X 57

3.bluetooth の変更を に取り込む $ git show HEAD commit 52b4ab9e6629884bf2a3f34dae5367a7ef5e9b4f Merge: 138f025 4c71318 Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Date: Thu Jun 11 16:23:38 2009 +0900 Merge commit 'bluetooth/' into 58

3.bluetooth の変更を に取り込む $ git show HEAD commit 52b4ab9e6629884bf2a3f34dae5367a7ef5e9b4f Merge: 138f025 4c71318 Author: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Date: Thu Jun 11 16:23:38 2009 +0900 Merge commit 'bluetooth/' into 59

3.bluetooth の変更を に取り込む sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B git merge bluetooth/ ローカルリポジトリ origin/ heads/ bluetooth/ A B 0 A B X 60

4. テストを行う $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-\ -j8 $ 実機でテスト 61

5. を元に戻す $ git reset -hard origin/ 62

5. を元に戻す sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B ローカルリポジトリ origin/ heads/ bluetooth/ A B 0 A B X 63

5. を元に戻す sh-2.6 リモートリポジトリ Bluetooth リモートリポジトリ 0 A B ローカルリポジトリ origin/ heads/ リセットする bluetooth/ 0 A B 64

まとめ リモートリポジトリとローカルリポジトリを理 解しましょう パッチを送るときは rebase して最新のコミットに対してのパッチを送るようにしましょう リモートリポジトリは git remote を使うと楽 です merge と rebase は使い分けましょう 65

その他知っておくとよい事 Git オブジェクトの仕組み index の動き コンフリクト時の復旧方法 git bisect/ blame の使い方 66

質疑応答 67

ご清聴ありがとうございました 68