SlideShare une entreprise Scribd logo
1  sur  16
Git 入門ちょい手前
後藤 祐一
埼玉大学 大学院理工学研究科
数理電子情報部門情報領域
発表の流れ
• バージョン管理システムとは
• ブランチとブランチモデル
• 分散バージョン管理システム Git
2
バージョン管理システム
• バージョン管理システム(Version Control System, VCS)
コンピュータ上で作成、編集されるファイルの変更履歴を
管理するためのシステム [ja.wikipedia 2014.7.10]
• 以下のような状況を解決するソフトウェア
– 間違ってファイルを消してしまった
– 変更を保存した後に、変更前の方が良いことに気付いた
– 複数人でファイルを編集しているとき、どの変更を誰が
行ったのかわからない
• 代表的なバージョン管理システム
– 集中管理:RCS、CVS、Subversion
– 分散管理:Git、Mercurial
3
変更履歴
編集1
l.2 (B, C)
l.3 (C, D)
l.4 (D, E)
A
B
C
D
Repository
リポジトリ
編集 A
C
D
E
編集 C
D
E
F
編集
編集2
l.1 (A, C)
l.2 (C, D)
l.3 (D, E)
l.4 (E, F)
格納
編集3
l.1 …
l.2 …
… …
… …
4
集中VCS
File 1
Repository
リポジトリ
作業ディレクトリのファイル/ディレクトリの変更履歴を
リポジトリに保存するのが「コミット」
リポジトリから(変更履歴を反映させた)ファイルや
ディレクトリを取り出すのが「チェックアウト」(注)
File 1
File 1File 1
File 1File 1
作業ディレクトリ
(Working directory)
コミット
(commit)
チェックアウト
(checkout)
注:チェックアウトの動作はVCSごとに異なる 5
集中VCSの例
• RCS (Revision Control System)
– 最初期のVCS
– Walter F. Tichyが1980年代に開発
• CVS (Concurrent Versions System)
– 1990年代に普及
– ネットワーク経由で利用できる最初期のVCS
• Subversion (略称:SVN)
– CVSの問題点を解決するために開発されたVCS
– CVSの後、Gitが普及する前まで広く使われていた
6
分散VCS
Rep.
集中VCSと分散VCSの違いはリポジトリが1つなのか、
複数なのかの違い。分散VCSではリポジトリ間で
格納している変更履歴を同期をとることができる
ローカルリポジトリの変更履歴を
リモートへ送るのが「プッシュ」
その逆が「プル」
リモートリポジトリをローカルに
コピーするのが「クローン」
WorkDir 1 プッシュ
(push)
プル
(pull) 7
Rep.
Rep.
WorkDir 3
WorkDir 2
クローン
(clone)
Git
• 分散バージョン管理システムの一種
• Linux kernelのソースコード管理のために提案・開発されて
いるバージョン管理システム
• ここ2~3年ではもっともよく利用されている
• リポジトリ間の通信方式
– ファイルシステム(同一計算機上の場合)
– SSH (Secure Shell)
– Git専用プロトコル(認証機能なし)
– HTTP/HTTPS(WebDAV)(pushするためにはWebDAV
が必要)
• 集中VCSに比べて、ブランチ管理が圧倒的に行いやすい
8
変更履歴の分岐(branch)(1/2)
< 1, 2, 3, 4>, <5, 6, 7>, <8> がそれぞれ分岐(branch ブランチ)
9
A
B
C
D
編集 A
C
D
E
C
D
E
F
C
D
E
F
A
B
D
E
A
B
D
F
A
B
D, F?
F, E?
A
B
F
E
分岐
分岐
合流
1 2 3 4
5 6 7
8
分岐させることを
「Branchを作る」ともいう
変更履歴の分岐(branch)(2/2)
二つの変更履歴の分岐を合流させると衝突が起こることがある
10
A
B
D
E
A
B
D
F
A
B
D, F?
F, E?
A
B
F
E
分岐
合流
5 6 7
8
合流させることを
「マージ(merge)」という
A
B
D
F
E
9
6と8で衝突(conflict)が
発生している
解決
衝突が起こっている変更履歴
を直すことを解決という
変更履歴の分岐の必要性
• 変更履歴を分岐させることで、複数人および複数バージョン
のソフトウェア開発を並行して進めることができる
• 基本となる分岐をマスターブランチ(master branch、省略し
てマスター)という
• ブランチをどのような約束で利用するのかのモデルを
ブランチモデル(branching model)という
• 有名なものとして以下のものがある
– git-flow [Driessen 2010]
– GitHub-flow [Chacon 2011]
11
ブランチモデルの基本発想
• 常に正常に動作するバージョンを用意しておく
• 現在公開しているバージョンを管理するためのソースコー
ドと、機能の追加、バグの修正のためのソースコードを
別々に管理する(つまり、ブランチを分ける)
• 何のためにソースコードの変更を行っているかがブランチ
名からわかるようにしておく
• 開発プロジェクトの目的や特徴、環境、メンバーの数や質
によって適切なブランチモデルは異なるので、既存のブラ
ンチモデルをそのまま使うのではなく、カスタマイズする
のが重要
12
git-flow
13
hotfixdevelop masterreleasefeature
2種類の恒久的ブランチ、3種類の一時的ブランチ
出典
[Driessen 2010]
GitHub flow
• 1種類の恒久的ブランチ (master) と作業内容を反映させた
任意個の一時的ブランチ(git-flow におけるhotfixとfeature
ブランチの役割)
• masterブランチへのマージの前にGitHubのプルリクエスト
という機能を使って、マージ対称の変更のレビューを行う
• レビュー後はmasterにマージし、即座に公開する
14
Git コマンド
Rep.
• リポジトリ:コメントおよび変更の履歴のデータセット
• 作業ツリー:現在作業しているディレクトリやファイル群
• インデックス:次のcommit で 変更を保存する対象ファイルのリスト
WorkDir 1
push
pull, fetch
15
Rep.
Rep.
WorkDir 3
WorkDir 2
clone
Index
作業ツリー
commit
add
checkout
branch, merge
mv, rm
参考資料
[ja.wikipedia 2014.7.10] ja.wikipedia: バージョン管理システム,
2014.7.10 版,
https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%82%B8%
E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%B7%E3%
82%B9%E3%83%86%E3%83%A0
[Git] Git: https://git-scm.com/
[Driessen 2010] V. Driessen: A successful Git branching model,
http://nvie.com/posts/a-successful-git-branching-model/ ;
見えない力: A successful Git branching model を翻訳しました,
http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-
model.html (上の翻訳)
[Chacon 2011] S. Chacon: GitHub Flow,
http://scottchacon.com/2011/08/31/github-flow.html ;
Gab-km: GitHub Flow (Japanese translation) ,
https://gist.github.com/Gab-km/3705015 (上の翻訳)
16

Contenu connexe

Tendances

はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 
Git_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfGit_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfYoshiki Tanaka
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control SystemKMS Technology
 
Git SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しようGit SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しよう富士見研究所
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門kazuki kuriyama
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣Yoshitaka Kawashima
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないCarnot Inc.
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Dabi Ahn
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 
データサイエンティスト向け性能問題対応の基礎
データサイエンティスト向け性能問題対応の基礎データサイエンティスト向け性能問題対応の基礎
データサイエンティスト向け性能問題対応の基礎Tetsutaro Watanabe
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門Shuji Yamada
 
Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Keigo Nishida
 
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッションEnpel
 
Version control
Version controlVersion control
Version controlvisual28
 

Tendances (20)

はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
Git_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdfGit_GitHub 入門者向けスライド.pdf
Git_GitHub 入門者向けスライド.pdf
 
GitHubの使い方
GitHubの使い方 GitHubの使い方
GitHubの使い方
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Git SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しようGit SourceTreeでバージョン管理しよう
Git SourceTreeでバージョン管理しよう
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
FHIR on python
FHIR on pythonFHIR on python
FHIR on python
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
データサイエンティスト向け性能問題対応の基礎
データサイエンティスト向け性能問題対応の基礎データサイエンティスト向け性能問題対応の基礎
データサイエンティスト向け性能問題対応の基礎
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西
 
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
 
Version control
Version controlVersion control
Version control
 

En vedette

体験GTD ~知的作業に区切りをつける方法~
体験GTD ~知的作業に区切りをつける方法~体験GTD ~知的作業に区切りをつける方法~
体験GTD ~知的作業に区切りをつける方法~Yuichi Goto
 
Brain Writingの研究への応用
Brain Writingの研究への応用Brain Writingの研究への応用
Brain Writingの研究への応用Yuichi Goto
 
GTDトリガーリスト
GTDトリガーリストGTDトリガーリスト
GTDトリガーリストYuichi Goto
 
Git, Github超入門
Git, Github超入門Git, Github超入門
Git, Github超入門Tomoki Saito
 
はじめようGit
はじめようGitはじめようGit
はじめようGittechscore
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンドYUKI Kaoru
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフローadd20
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
Orientacion vocacional
Orientacion vocacionalOrientacion vocacional
Orientacion vocacionalLilitAaDiazz
 
Answers that you Might be Seeking about Biometric
Answers that you Might be Seeking about Biometric Answers that you Might be Seeking about Biometric
Answers that you Might be Seeking about Biometric Action locksmiths
 
Siemens_BG_presentation_2015
Siemens_BG_presentation_2015Siemens_BG_presentation_2015
Siemens_BG_presentation_2015Slavena Koleva
 

En vedette (15)

体験GTD ~知的作業に区切りをつける方法~
体験GTD ~知的作業に区切りをつける方法~体験GTD ~知的作業に区切りをつける方法~
体験GTD ~知的作業に区切りをつける方法~
 
Brain Writingの研究への応用
Brain Writingの研究への応用Brain Writingの研究への応用
Brain Writingの研究への応用
 
GTDトリガーリスト
GTDトリガーリストGTDトリガーリスト
GTDトリガーリスト
 
Method Card
Method CardMethod Card
Method Card
 
Git, Github超入門
Git, Github超入門Git, Github超入門
Git, Github超入門
 
はじめようGit
はじめようGitはじめようGit
はじめようGit
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
Tp3 (1)
Tp3 (1)Tp3 (1)
Tp3 (1)
 
Orientacion vocacional
Orientacion vocacionalOrientacion vocacional
Orientacion vocacional
 
Answers that you Might be Seeking about Biometric
Answers that you Might be Seeking about Biometric Answers that you Might be Seeking about Biometric
Answers that you Might be Seeking about Biometric
 
Siemens_BG_presentation_2015
Siemens_BG_presentation_2015Siemens_BG_presentation_2015
Siemens_BG_presentation_2015
 
Bach vu thesis
Bach vu thesisBach vu thesis
Bach vu thesis
 
Pregnancy and HPV
Pregnancy and HPVPregnancy and HPV
Pregnancy and HPV
 

Similaire à Git 入門ちょい手前

サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてサイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてTakeo Noda
 
git&GitHub&SourceTree入門
git&GitHub&SourceTree入門git&GitHub&SourceTree入門
git&GitHub&SourceTree入門Gamu2059
 
【閲覧用】新人教育向け_バージョン管理システム.pptx
【閲覧用】新人教育向け_バージョン管理システム.pptx【閲覧用】新人教育向け_バージョン管理システム.pptx
【閲覧用】新人教育向け_バージョン管理システム.pptxTomoko Iwasaki
 
git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)kataware
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップHiroaki Murayama
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルComputational Materials Science Initiative
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 Hiro Yoshioka
 
バージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないかバージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないか弘実 佐野
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
20130608 git-0
20130608 git-020130608 git-0
20130608 git-0Kasu Unko
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
ディレクターやデザイナーのためのリテラシー向上講座 git入門編
ディレクターやデザイナーのためのリテラシー向上講座 git入門編ディレクターやデザイナーのためのリテラシー向上講座 git入門編
ディレクターやデザイナーのためのリテラシー向上講座 git入門編Yosuke INOUE
 
Git社内勉強会資料
Git社内勉強会資料Git社内勉強会資料
Git社内勉強会資料Kenji Takei
 
バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアルRyo Igarashi
 
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Kosuke Tanabe
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~DoshishaUniv ProntiatVR
 

Similaire à Git 入門ちょい手前 (20)

サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてサイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
 
git&GitHub&SourceTree入門
git&GitHub&SourceTree入門git&GitHub&SourceTree入門
git&GitHub&SourceTree入門
 
【閲覧用】新人教育向け_バージョン管理システム.pptx
【閲覧用】新人教育向け_バージョン管理システム.pptx【閲覧用】新人教育向け_バージョン管理システム.pptx
【閲覧用】新人教育向け_バージョン管理システム.pptx
 
about git
about gitabout git
about git
 
git入門(講義っぽく)
git入門(講義っぽく)git入門(講義っぽく)
git入門(講義っぽく)
 
Git勉強会 #01
Git勉強会 #01Git勉強会 #01
Git勉強会 #01
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップ
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
 
Gitのススメ
GitのススメGitのススメ
Gitのススメ
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 
バージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないかバージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないか
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
20130608 git-0
20130608 git-020130608 git-0
20130608 git-0
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
ディレクターやデザイナーのためのリテラシー向上講座 git入門編
ディレクターやデザイナーのためのリテラシー向上講座 git入門編ディレクターやデザイナーのためのリテラシー向上講座 git入門編
ディレクターやデザイナーのためのリテラシー向上講座 git入門編
 
Git社内勉強会資料
Git社内勉強会資料Git社内勉強会資料
Git社内勉強会資料
 
バージョン管理システムチュートリアル
バージョン管理システムチュートリアルバージョン管理システムチュートリアル
バージョン管理システムチュートリアル
 
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
 
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
Github勉強会~Git・Githubを用いて共同開発・バージョン管理をしよう~
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 

Git 入門ちょい手前