Git 入門 2012年7月3日第1回 Git 勉強会  @kunimiya
INTRODUCTION
みなさんプログラムのバックアップはとってます     か?
(取ってない人は改心しましょう)
プログラムの変更記録は重要• 1週間の間書いていたコードが無駄になり、  さかのぼって開発をやり直すことも珍しく  ない• ちょっと変更を加えただけで動かなくなる  こともある• プログラムのバックアップを定期的にとっ  て安全に管理する習慣が大事
「日付ごとにフォルダごとコピーしてるから大丈夫で     す!」
(そのプログラム、本当に管理できてますか?
あるゼミ生Aの開発記録     • 「日付ごとにフォル       ダーごとコピーすれ       ば大丈夫だろ」     • 「安心安心」
あるゼミ生Aの開発記録     • 「あれ・・・・・・       実験用PCだと動かな       い」     •    「たしか3日前は         動いたはず」     • 3日前のコードから開       発をやり直し
あるゼミ生Aの開発記録     • 「あ、しまった。3日       前のコードにはあの       新機能が無い!」     • 「前書いたコードか       らコピーしよう……」     • しだいにどれが       「最新のコード」 ...
最終的には。。。
日付ごとのバックアップの問題      点• 問題点1: – 日付ごとにまるごとバックアップは、後から   何を変更したのかが分かりにくい• 問題点2: – まるごとバックアップしていくので、ファイ   ルサイズが膨大になる• 問題点3: – ...
そうだバージョン管理システムを    導入しよう
バージョン管理システム      (Version Control System)• プログラムの変更履歴を管理するシステム• OSSプロジェクトなどのように、複数人が同時  にプログラムを開発できるようにするために生  み出された• CVS,...
今回取り上げるVCS: Git• 分散型バージョン管理システム(VCS) の一種• Linux の父 Linus Torvalds がLinuxプロジェクトの  VCSとして開発した
Githubのブレイクで一躍Gitが有名          に
gitの管理方法• 日付ごとではなく、リビジョンという単位で  プログラムの変更記録を保存する• リビジョン:変更記録の単位• ブランチ:リビジョンを指し示すラベル• ワークツリー:現在のプログラムコード• インデックス:リビジョンに登録する変...
Gitでのバージョン管理方法  (ディレクトリの作成)                リビジョン                ブランチ                インデックス
Gitでのバージョン管理方法         2012年06月27日   リビジョンコミット   (ディレクトリの作成)         ディレクトリを作った                       ブランチ                ...
Gitでのバージョン管理方法    2012年06月27日  (ディレクトリの作成)                  リビジョン    ディレクトリを作った                  ブランチ                  インデ...
Gitでのバージョン管理方法       2012年06月27日      リビジョン       ディレクトリを作った                        ブランチ       2012年06月28日      インデックスコミット...
Gitでのバージョン管理方法  2012年06月27日       リビジョン  ディレクトリを作った                    ブランチ   2012年06月28日      インデックス   Rubyのプログラムを書いた (HT...
Gitでのバージョン管理方法       2012年06月27日      リビジョン       ディレクトリを作った                        ブランチ       2012年06月28日      インデックス    ...
Gitでのバージョン管理方法  2012年06月27日       リビジョン  ディレクトリを作った                    ブランチ   2012年06月28日      インデックス   Rubyのプログラムを書いた   2...
Gitでのバージョン管理方法       2012年06月27日       リビジョン       ディレクトリを作った                         ブランチ       2012年06月28日       インデックス ...
GITに触ってみよう
Git 最大の障壁Windows版のインストール
Windowsへの      git インストールは鬼門• Windows には4通りのインストール方法 1. msysgit というコマンドライン版をインストー    ル 2. Git for Windows というGUI中心の版をインス  ...
今回の環境• kunimiyaのMacbookに一時的なアカウント  を作り、そこでGitリポジトリを作ってみ  ましょう
git の設定 (git config)$ git config --global user.name YOURNAME$ git config --global user.email YOUR@ADDRESS$ git config --gl...
git リポジトリの作成 (git init)$ mkdir test$ cd test$ git initInitialized empty Git repository in  /Users/Tsunekawa7/development/t...
ファイルを作成する$ echo Hello,Git. > README$ lsREADME$ cat READMEHello,Git.• リポジトリに追加するファイルを作成す  る
ファイルの確認 (git status)$ git status• git status でリポジトリ内のファイルを確  認
ファイルの確認 (git status)$ git status# On branch master## Initial commit## Untracked files:# (use "git add <file>..." to includ...
ファイルを作成する (git add )$ git add README• git add でファイルをインデックスに追加• git status で確認すると「Tracked files」とし  てREADME が登録されている
ファイルを作成する (git add )$ git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <fil...
変更をコミットする (git         commit )$ git commit –m “initial commit”[master (root-commit) 056b356] initial commit 1 files chang...
変更をコミットする (git log )$ git logcommit056b3567d69efdbb34f404db093e78016fffdae3Author: kunimiya toji <kunimiya@example.com>Dat...
色々ファイルを追加してみよう• Rubyスクリプトを追加してみる• HTMLを追加してみる• などなど• ファイルの変更をコミットしてリビジョン  を増やしてみよう
Diff付きでlogる (git log -p )$ git log –p• 行単位で変更が記録されているのが分か  る
ここまでのおさらいgit init     gitリポジトリの初期化git status   インデックスの内容を表示git diff     最新リビジョンとの差分を表             示git add      ワーキングツリーに変...
次回予告• 今回ならった範囲では、まだ日付バック  アップとあまり変わらない• Git はブランチを駆使したときに真の力を  発揮• 第2回: ブランチを活用した効率的なプロ  グラミング方法• 第3回: push, pull を使って他人とプ...
第1回Git勉強会
Upcoming SlideShare
Loading in …5
×

第1回Git勉強会

1,728 views
1,677 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,728
On SlideShare
0
From Embeds
0
Number of Embeds
94
Actions
Shares
0
Downloads
10
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

第1回Git勉強会

  1. 1. Git 入門 2012年7月3日第1回 Git 勉強会 @kunimiya
  2. 2. INTRODUCTION
  3. 3. みなさんプログラムのバックアップはとってます か?
  4. 4. (取ってない人は改心しましょう)
  5. 5. プログラムの変更記録は重要• 1週間の間書いていたコードが無駄になり、 さかのぼって開発をやり直すことも珍しく ない• ちょっと変更を加えただけで動かなくなる こともある• プログラムのバックアップを定期的にとっ て安全に管理する習慣が大事
  6. 6. 「日付ごとにフォルダごとコピーしてるから大丈夫で す!」
  7. 7. (そのプログラム、本当に管理できてますか?
  8. 8. あるゼミ生Aの開発記録 • 「日付ごとにフォル ダーごとコピーすれ ば大丈夫だろ」 • 「安心安心」
  9. 9. あるゼミ生Aの開発記録 • 「あれ・・・・・・ 実験用PCだと動かな い」 • 「たしか3日前は 動いたはず」 • 3日前のコードから開 発をやり直し
  10. 10. あるゼミ生Aの開発記録 • 「あ、しまった。3日 前のコードにはあの 新機能が無い!」 • 「前書いたコードか らコピーしよう……」 • しだいにどれが 「最新のコード」 なのか分からなく なってくる
  11. 11. 最終的には。。。
  12. 12. 日付ごとのバックアップの問題 点• 問題点1: – 日付ごとにまるごとバックアップは、後から 何を変更したのかが分かりにくい• 問題点2: – まるごとバックアップしていくので、ファイ ルサイズが膨大になる• 問題点3: – プログラム開発が枝分かれすると混沌 – 例:実験用システムをメンテナンスしつつ、 最新版のプログラムを開発する場合
  13. 13. そうだバージョン管理システムを 導入しよう
  14. 14. バージョン管理システム (Version Control System)• プログラムの変更履歴を管理するシステム• OSSプロジェクトなどのように、複数人が同時 にプログラムを開発できるようにするために生 み出された• CVS, Subversion, Mercurial, Bazzarなど様々なツー ルが存在する
  15. 15. 今回取り上げるVCS: Git• 分散型バージョン管理システム(VCS) の一種• Linux の父 Linus Torvalds がLinuxプロジェクトの VCSとして開発した
  16. 16. Githubのブレイクで一躍Gitが有名 に
  17. 17. gitの管理方法• 日付ごとではなく、リビジョンという単位で プログラムの変更記録を保存する• リビジョン:変更記録の単位• ブランチ:リビジョンを指し示すラベル• ワークツリー:現在のプログラムコード• インデックス:リビジョンに登録する変更の リスト
  18. 18. Gitでのバージョン管理方法 (ディレクトリの作成) リビジョン ブランチ インデックス
  19. 19. Gitでのバージョン管理方法 2012年06月27日 リビジョンコミット (ディレクトリの作成) ディレクトリを作った ブランチ インデックス
  20. 20. Gitでのバージョン管理方法 2012年06月27日 (ディレクトリの作成) リビジョン ディレクトリを作った ブランチ インデックス (rbファイルの追加)
  21. 21. Gitでのバージョン管理方法 2012年06月27日 リビジョン ディレクトリを作った ブランチ 2012年06月28日 インデックスコミット Rubyのプログラムを書いた
  22. 22. Gitでのバージョン管理方法 2012年06月27日 リビジョン ディレクトリを作った ブランチ 2012年06月28日 インデックス Rubyのプログラムを書いた (HTMLファイルの追加)
  23. 23. Gitでのバージョン管理方法 2012年06月27日 リビジョン ディレクトリを作った ブランチ 2012年06月28日 インデックス Rubyのプログラムを書いた 2012年06月29日コミット HTMLを書いた
  24. 24. Gitでのバージョン管理方法 2012年06月27日 リビジョン ディレクトリを作った ブランチ 2012年06月28日 インデックス Rubyのプログラムを書いた 2012年06月29日 HTMLを書いた (rbファイルに追記)
  25. 25. Gitでのバージョン管理方法 2012年06月27日 リビジョン ディレクトリを作った ブランチ 2012年06月28日 インデックス Rubyのプログラムを書いた 2012年06月29日 HTMLを書いた 2012年06月30日コミット Rubyプログラムを書きなおし
  26. 26. GITに触ってみよう
  27. 27. Git 最大の障壁Windows版のインストール
  28. 28. Windowsへの git インストールは鬼門• Windows には4通りのインストール方法 1. msysgit というコマンドライン版をインストー ル 2. Git for Windows というGUI中心の版をインス トール 3. Windows にCygWin(Unix)をいれてインストール 4. WindowsにVMWareでLinuxを入れてインストー ル• 勉強会でインストールすると終わらないの で、今回はインストールは省略
  29. 29. 今回の環境• kunimiyaのMacbookに一時的なアカウント を作り、そこでGitリポジトリを作ってみ ましょう
  30. 30. git の設定 (git config)$ git config --global user.name YOURNAME$ git config --global user.email YOUR@ADDRESS$ git config --global --list• コミットする際に登録される名前、 メールアドレスを設定する
  31. 31. git リポジトリの作成 (git init)$ mkdir test$ cd test$ git initInitialized empty Git repository in /Users/Tsunekawa7/development/test/.git/• リポジトリにするディレクトリ (test) を作 成し、git init で初期化
  32. 32. ファイルを作成する$ echo Hello,Git. > README$ lsREADME$ cat READMEHello,Git.• リポジトリに追加するファイルを作成す る
  33. 33. ファイルの確認 (git status)$ git status• git status でリポジトリ内のファイルを確 認
  34. 34. ファイルの確認 (git status)$ git status# On branch master## Initial commit## Untracked files:# (use "git add <file>..." to include in what will be committed)## READMEnothing added to commit but untracked files present (use "gitadd" to track)• さっき保存したファイルが「Untracked files」として表示されている
  35. 35. ファイルを作成する (git add )$ git add README• git add でファイルをインデックスに追加• git status で確認すると「Tracked files」とし てREADME が登録されている
  36. 36. ファイルを作成する (git add )$ git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: README#• git status で確認すると変更の記録として README が登録されている
  37. 37. 変更をコミットする (git commit )$ git commit –m “initial commit”[master (root-commit) 056b356] initial commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 README• git commit で登録された変更を「リビ ジョン」としてコミット• 「READMEというファイルを追加した」とい う変更が記録される
  38. 38. 変更をコミットする (git log )$ git logcommit056b3567d69efdbb34f404db093e78016fffdae3Author: kunimiya toji <kunimiya@example.com>Date: Sun Jul 1 00:14:03 2012 +0900 initial commit• git log でリビジョンの履歴を閲覧できる
  39. 39. 色々ファイルを追加してみよう• Rubyスクリプトを追加してみる• HTMLを追加してみる• などなど• ファイルの変更をコミットしてリビジョン を増やしてみよう
  40. 40. Diff付きでlogる (git log -p )$ git log –p• 行単位で変更が記録されているのが分か る
  41. 41. ここまでのおさらいgit init gitリポジトリの初期化git status インデックスの内容を表示git diff 最新リビジョンとの差分を表 示git add ワーキングツリーに変更を追 加git commit 変更のコミットgit log 変更履歴の表示
  42. 42. 次回予告• 今回ならった範囲では、まだ日付バック アップとあまり変わらない• Git はブランチを駆使したときに真の力を 発揮• 第2回: ブランチを活用した効率的なプロ グラミング方法• 第3回: push, pull を使って他人とプログラ ムコードを共有する

×