Git overview                 Version 0.96This work is licensed under a Creative Commons  Attribution-ShareAlike 3.0 Unport...
Agenda●    バージョン管理システムってどういうもの?●    git のモデルとローカル操作●    git でのリモート連携●    参考資料など                           2
git とは...●    発音は [ɡít] (ぎっと)●    Linus Tovals が Linux kernel のために作成したバージョンコント    ロールシステム●    Linux kernel 以外でも幅広く使われるように ...
バージョン管理システム (VCS)●    動機    –   修正を世代ごとに取っておきたい    –   修正の履歴を簡単にみたい    –   修正差分の確認を簡単にしたい●    有名なオープンソースツール    –   RCS, CV...
VCS/SCMでよく使われる用語●    リポジトリ              ●                           ブランチ    –   全ての履歴データを保存し       –   修正の流れを分岐する仕組       ...
概念的ワークフロー●    最初にレポジトリから作業用ディレクトリ(作業ツリー)    にファイルを展開 = チェックアウト●    作業ツリーを変更●    変更点をレポジトリに書き戻す = チェックイン●    問題が起きたら    –  ...
git local(ローカル編)            7
git のモデル(1) - コミットツリー●    メインのデータ構造      XXサイト、最初のバージョン●    コミットの親子関係      タイトル画像を追加    を示す                   イベント情報を追加●  ...
(余談)「ツリー」とは言うけど●    実際には片方向有向    グラフ    –   ルートノードは複数        存在することがある    –   各ノードは1つ以上        の親への参照を持つ        (ルート以外)   ...
git のモデル(2) - オブジェクトDB●    SHA1 Digetst をキーにした Key-Value ストレージ●    実体はレポジトリトップの .git の下に存在する●    主なオブジェクトタイプ    –   commit...
オブジェクトの関連commit                   blob           tree                         blob                                blob    ...
実際の例: commit オブジェクト Proper timezone handling without needing activesupport c7e7f0fe36798ebfbad51f73988e9ec1ceba30d8 Update...
実際の例: tree オブジェクトtree 298e00bf81e1cb8f185bb0f3f3a7e36c4fe6de1eparent b94712703db282e8e227df510997c19ae0843f50author Alex D...
実際の例: blob オブジェクト100644   blob   39272ef0e0f5a05647812a57cebd1b3644770105 .gitignore100644   blob   01c496d464df1deddb8531...
git のモデル(3) - リファレンス●    ブランチ、タグなどオブジェクトではない参    照ラベル●    任意の名前を持ち、通常は commit の SHA1    を指している                            ...
ブランチとタグ●    一つのコミットのSHA1を        release_01    指しているラベル●    ブランチはコミットが進む    と移動していく                      db-tune●    タグは移動...
HEAD●    現在チェックアウトしてい          release_01    るブランチを指すポインタ●    操作対象を省略した場合は    たいてい自動的に HEAD (も              db-tune    しくは...
git コマンド●    レポジトリに cd して、git <サブコマンド>●    今から使うサブコマンド    –   init: レポジトリ初期化    –   add: ファイルをコミット予定(index)に追加    –   comm...
git の具体的な作業の流れの例●  レポジトリを作る  – git init●  コミット予定に追加する  – git add●  コミット  – git commit●  別作業をするためにブランチを作成  – git branch●  新...
実際の例とレポジトリの動き (1)●    レポジトリを作る     $ mkdir try-git     $ cd try-git     $ git init●    ファイルを作って add     $ date > date.txt ...
実際の例とレポジトリの動き (2)                                                 master                                                  ...
実際の例とレポジトリの動き (3)                                                    First commit●    ブランチを作る                          ns-...
実際の例とレポジトリの動き (4)                                                                First commit●     master ブランチに戻る         ...
実際の例とレポジトリの動き (5)                                            First commit●    ns-stamp ブランチを    マージ                    ns-...
ブランチ(ラベル)は重要●    ブランチのついていないコミットの枝は見え    なくなる(そしてそのうちgcで回収される)●    マージや複数のレポジトリ連携でもブランチ    を使って操作する●    常にツリーの状態を意識(チェック)し...
git log --graph                  26
gitk --all             27
git remote(リモート編)             28
Git の分散レポジトリ●    各人がそれぞれ、(完全な)レポジトリと作業ツリーのセッ    トを持つ●    システム的には中央は存在しない    –   でも概念的には作ってもいい    –   実際のプロジェクト運営では作成する事が多い...
自分のレポジトリと     作業ツリーの間で作業     Alice                   Rob     Checkout                CheckoutWT    Commit    Repos   WT   ...
それぞれのレポジトリ間でやりとり                                 Joe                            WT        Alice                     Repos ...
中央にレポジトリを置く運用              Bare Repository                     Repos     Alice                           JoeWT            ...
それぞれが公開用                レポジトリを持つ場合Alices public repo                       Joes public repo                      Robs publ...
マージ(pull)機構付きの特殊な     公開レポジトリ(githubなど)Alices public repo                       Joes public repo                      Robs...
リモートレポジトリ連携●    単にお互いを比較して、存在しないオブジェクトを交換する●    操作    –   clone: レポジトリをコピーして新たなレポジトリを作成    –   fetch: 相手のレポジトリから自分に無い部分を取得...
リモートブランチ●    外部レポジトリとの連携のキモ●    相手の持っているブランチが、単純に“リモートレポジトリ名/    ブランチ名”と言う名前のブランチに見える    –   "sfjp" という名前の付けられたリモート URL   ...
実際の操作: リモート編 (1)  ●       リモートから clone             $ git clone host2.example.com:git/tryorigin/master                     ...
実際の操作: リモート編 (2)  ●       ローカルの master ブランチを変更             $ git commit -av -m Fix typoorigin/master                      ...
実際の操作: リモート編 (3)●     origin に push           $ git push                                                 origin           ...
実際の操作: リモート編 (4)●     リモートブランチを元にローカルブランチを     作成し、そこにカレントブランチを移動           $ git checkout -b autoupdate origin/autoupdate...
実際の操作: リモート編 (5)  ●       ローカルでバグフィクスしてmasterにマージ           $ git commit -av -m Fix automation bug           $ git checkou...
実際の操作: リモート編 (6)  ●       リモートの master が誰かに更新された                                           origin                  First c...
実際の操作: リモート編 (7)  ●      origin を pull (の fetch 部分の様子)          $ git pull                                                ...
実際の操作: リモート編 (8)  ●       origin を pull (の merge 部分)           $ git pull                                                o...
実際の操作: リモート編 (9) ●      origin に変更をふたたび push          $ git push                                                        or...
Pushの補足と注意●    基本的に push する前に pull すること!●    標準では HEAD の指しているブランチだけが相手に送られ、同名のリ    モートブランチラベルを移動する    –   送るブランチ、動かすブランチの都...
レポジトリ間連携プロトコル●    アクセスプロトコルは色々    –   ローカルファイルシステム (fsのアクセスコントロールに従う)    –   git オリジナルプロトコル (認証がないので基本 read-only)    –   s...
git refs(参考と補足)            48
鉄板の参考書籍: 入門Git●    秀和システム ISBN:978-4798023809●    現在の Git の開発者/プロジェクトリーダ/メンテナである 濱野純    氏が書いた書籍●    題名と違い、ぜんぜん入門だけじゃない●   ...
参考文書●    man 7 gittutorial (日本語訳)    http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/gittutorial.html●    サルで...
設定など●    git config --global user.name "名前"    git config --global user.email メールアドレス    –   この2つは必ず設定しておこう●   git config ...
覚えておくと便利なサブコマンド等●    reset: HEAD と HEAD が指しているブランチラベルを好きな場所    に移動する    –   --hard を付けると作業ツリーも更新する    –   git reset --hard...
Git のホスティングサービス●   SourceForge.JP●   github.com●   Google Code●   SourceForget.net●   repo.or.cz●    他にも海外にはたくさん          ...
Upcoming SlideShare
Loading in …5
×

Git overview (v 0.96)

3,260 views
3,184 views

Published on

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

No Downloads
Views
Total views
3,260
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Git overview (v 0.96)

  1. 1. Git overview Version 0.96This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. Tatsuki Sugiura <sugi@nemui.org>
  2. 2. Agenda● バージョン管理システムってどういうもの?● git のモデルとローカル操作● git でのリモート連携● 参考資料など 2
  3. 3. git とは...● 発音は [ɡít] (ぎっと)● Linus Tovals が Linux kernel のために作成したバージョンコント ロールシステム● Linux kernel 以外でも幅広く使われるように (xorg, rails, wine, cairo...)● コミットツリーのモデルを素直に実装● ハッシュをキーにしたオブジェクトDB● 中央サーバに依存しない分散モデル (分散レポジトリ)● 十分な機能性 (このスライドでは説明しません) – きわめて高速 – 強力なマージ機構とマージの履歴情報 – 差分圧縮によるストレージの効率化 3
  4. 4. バージョン管理システム (VCS)● 動機 – 修正を世代ごとに取っておきたい – 修正の履歴を簡単にみたい – 修正差分の確認を簡単にしたい● 有名なオープンソースツール – RCS, CVS, Subversion (svn), bazzar (bzr), mercurial (hg), git (new!)● SCM (Software Configuration Management) ツールと 呼ばれたりも 4
  5. 5. VCS/SCMでよく使われる用語● リポジトリ ● ブランチ – 全ての履歴データを保存し – 修正の流れを分岐する仕組 ている場所 み● チェックアウト ● マージ – リポジトリからデータを取 – 並行して行われた複数の修 り出す 正を併合すること● コミット/チェックイン ● コンフリクト – リポジトリに修正した内容 – マージの際、修正内容が競 を書きこむ 合すること (同じ箇所に別 の修正を行う、など)● 作業ツリー/作業コピー – 実際の編集作業を行う為に ファイルを展開した場所 5
  6. 6. 概念的ワークフロー● 最初にレポジトリから作業用ディレクトリ(作業ツリー) にファイルを展開 = チェックアウト● 作業ツリーを変更● 変更点をレポジトリに書き戻す = チェックイン● 問題が起きたら – 単純に古いバージョンをチェックアウトして差し戻す – 最近の修正差分をみて、問題点を発見 → 修正 6
  7. 7. git local(ローカル編) 7
  8. 8. git のモデル(1) - コミットツリー● メインのデータ構造 XXサイト、最初のバージョン● コミットの親子関係 タイトル画像を追加 を示す イベント情報を追加● git を使う上で最重要 タイトルを冬バージョンへ 要素! 常にツリー の状態を把握しよう 冬のイベントを追加 日付が間違っていたのを修正 8
  9. 9. (余談)「ツリー」とは言うけど● 実際には片方向有向 グラフ – ルートノードは複数 存在することがある – 各ノードは1つ以上 の親への参照を持つ (ルート以外) 9
  10. 10. git のモデル(2) - オブジェクトDB● SHA1 Digetst をキーにした Key-Value ストレージ● 実体はレポジトリトップの .git の下に存在する● 主なオブジェクトタイプ – commit: コミットメッセージとメタ情報 – tree: ディレクトリ – blob: ファイルの実体● Blob はバイナリそのまま、それ以外は RFC822 風(?) の形式で表したテキストのダイジェストを取るだけ 10
  11. 11. オブジェクトの関連commit blob tree blob blob tree blobcommit blob treecommit tree blob blob 11
  12. 12. 実際の例: commit オブジェクト Proper timezone handling without needing activesupport c7e7f0fe36798ebfbad51f73988e9ec1ceba30d8 Update install instructions da7f4396d920a5a61039da6a28486caf6705474d CA: Remembrance Day typo -- closes GH-4 b94712703db282e8e227df510997c19ae0843f50 tree 298e00bf81e1cb8f185bb0f3f3a7e36c4fe6de1e parent b94712703db282e8e227df510997c19ae0843f50 author Alex Dunae <alex@dunae.ca> 1289601832 -0800 committer Alex Dunae <alex@dunae.ca> 1289601832 -0800 Update install instructions 12
  13. 13. 実際の例: tree オブジェクトtree 298e00bf81e1cb8f185bb0f3f3a7e36c4fe6de1eparent b94712703db282e8e227df510997c19ae0843f50author Alex Dunae <alex@dunae.ca> 1289601832 -0800committer Alex Dunae <alex@dunae.ca> 1289601832 -0800Update install instructions 100644 blob 39272ef0e0f5a05647812a57cebd1b3644770105 .gitignore 100644 blob 01c496d464df1deddb853119e8b61777e5703a67 CHANGELOG 100644 blob c5834ab3f785778b6ddd221c806ab1a3ba2045f7 LICENSE 100644 blob ec0cdcc95d268d7a9a8702263db25166ec69c052 README.rdoc 100644 blob 715efbe1e1832ea19b4fa8c302e1ac53a6b61069 REFERENCES 040000 tree 504df98c21286faaa64e5cb0f5d712b14d85ae08 data 100644 blob 34327c0c81423708c4ee818cbfd71df916e3441e holidays.gemsp 040000 tree c1cf84305ab68f2150ae5588fdb33288f6a68de4 lib 100644 blob 618f85767bf69a20f380f50320fdf63955eec1ce rakefile.rb 040000 tree 0ba469d863ceccc2ecf5c7474be59e85a6c6e647 test 13
  14. 14. 実際の例: blob オブジェクト100644 blob 39272ef0e0f5a05647812a57cebd1b3644770105 .gitignore100644 blob 01c496d464df1deddb853119e8b61777e5703a67 CHANGELOG100644 blob c5834ab3f785778b6ddd221c806ab1a3ba2045f7 LICENSE100644 blob ec0cdcc95d268d7a9a8702263db25166ec69c052 README.rdoc... = Ruby Holidays Gem A set of functions to deal with holidays in Ruby. Extends Rubys built-in Date class and supports custom holiday definition lists. === Installation To install the gem from RubyGems: gem install holidays === Examples 14
  15. 15. git のモデル(3) - リファレンス● ブランチ、タグなどオブジェクトではない参 照ラベル● 任意の名前を持ち、通常は commit の SHA1 を指している 15
  16. 16. ブランチとタグ● 一つのコミットのSHA1を release_01 指しているラベル● ブランチはコミットが進む と移動していく db-tune● タグは移動しない● このスライドでは説明しな experimental いけど注意: ラベルではない annotated tag というのもある (DB に オブジェクトとして記録さ release_02 れる) master 16
  17. 17. HEAD● 現在チェックアウトしてい release_01 るブランチを指すポインタ● 操作対象を省略した場合は たいてい自動的に HEAD (も db-tune しくは HEAD がさしている ブランチ) を対象にする● コミットのSHA1を直接指す experimental こともできる (例外的な使い 方) release_02 HEAD master 17
  18. 18. git コマンド● レポジトリに cd して、git <サブコマンド>● 今から使うサブコマンド – init: レポジトリ初期化 – add: ファイルをコミット予定(index)に追加 – commit: 実際のコミットを行う – branch: ブランチの一覧、作成、削除 – checkout: 指定したブランチをチェックアウトし 作業ツリーを更新 18
  19. 19. git の具体的な作業の流れの例● レポジトリを作る – git init● コミット予定に追加する – git add● コミット – git commit● 別作業をするためにブランチを作成 – git branch● 新しいブランチに切り替える – git checkout● 修正してコミット – git commit -av● 元のブランチに戻る – git checkout 19
  20. 20. 実際の例とレポジトリの動き (1)● レポジトリを作る $ mkdir try-git $ cd try-git $ git init● ファイルを作って add $ date > date.txt $ git add date.txt HEAD● commit master $ git commit -v -m First commit First commit 20
  21. 21. 実際の例とレポジトリの動き (2) master HEAD● ファイルを変更する First commit $ date > date.txt (working copy)● git add で変更した master HEAD ファイルをステージ First commit (indexに登録)する (index) $ git add date.txt (working copy)● commit First commit $ git comit -v -m Update data.txt HEAD Update date.txt master 21
  22. 22. 実際の例とレポジトリの動き (3) First commit● ブランチを作る ns-stamp Update date.txt $ git branch ns-stamp master HEAD● ブランチに移動 HEAD First commit master $ git checkout ns-stamp ns-stamp Update date.txt● ブランチでコミット First commit $ date “+%s.%N” > stamp $ git add stamp master $ git commit -m Add ns stamp HEAD Update date.txt ns-stamp Add ns stamp 22
  23. 23. 実際の例とレポジトリの動き (4) First commit● master ブランチに戻る master ns-stamp Update date.txt $ git checkout master HEAD Add ns stamp (Working copy)● コミット $ date > date.txt First commit $ git comit -av -m Update date, again. Update date.txt ns-stamp HEAD Add ns stamp master Update date, again 23
  24. 24. 実際の例とレポジトリの動き (5) First commit● ns-stamp ブランチを マージ ns-stamp Update date.txt $ git merge ns-stamp Add ns stamp Update date, again Merge branch ns-stamp master HEAD 24
  25. 25. ブランチ(ラベル)は重要● ブランチのついていないコミットの枝は見え なくなる(そしてそのうちgcで回収される)● マージや複数のレポジトリ連携でもブランチ を使って操作する● 常にツリーの状態を意識(チェック)しよう – gitk --all – git log --graph 25
  26. 26. git log --graph 26
  27. 27. gitk --all 27
  28. 28. git remote(リモート編) 28
  29. 29. Git の分散レポジトリ● 各人がそれぞれ、(完全な)レポジトリと作業ツリーのセッ トを持つ● システム的には中央は存在しない – でも概念的には作ってもいい – 実際のプロジェクト運営では作成する事が多い – その場合は作業ツリーを持たない特殊(bare)なレポジトリを作る といい● 組織、運用に合わせて好きなように構成可能● レポジトリ間で足らないオブジェクトを送り合う● 作業ツリーへの操作や反映は、各々で行う 29
  30. 30. 自分のレポジトリと 作業ツリーの間で作業 Alice Rob Checkout CheckoutWT Commit Repos WT Commit Repos 30
  31. 31. それぞれのレポジトリ間でやりとり Joe WT Alice Repos WT Repos Rob WT Repos 31
  32. 32. 中央にレポジトリを置く運用 Bare Repository Repos Alice JoeWT Rob WT Repos Repos WT Repos 32
  33. 33. それぞれが公開用 レポジトリを持つ場合Alices public repo Joes public repo Robs public repo Repos Repos Repos Alice Joe WT Rob WT Repos Repos WT Repos 33
  34. 34. マージ(pull)機構付きの特殊な 公開レポジトリ(githubなど)Alices public repo Joes public repo Robs public repo Repos Repos Repos Alice Joe WT Rob WT Repos Repos WT Repos 34
  35. 35. リモートレポジトリ連携● 単にお互いを比較して、存在しないオブジェクトを交換する● 操作 – clone: レポジトリをコピーして新たなレポジトリを作成 – fetch: 相手のレポジトリから自分に無い部分を取得 – push: 自分のレポジトリから相手にオブジェクトを書き込み、相手の ブランチラベルを移動させる – pull: fetch + merge● 外部レポジトリURLを名前(ラベル)を付けて管理 – 例: (URL=) http://github.com/sugi/btr-backup.git => (ラベル) github – 標準の参照先(clone元)はディフォルトでは origin と言う名前 35
  36. 36. リモートブランチ● 外部レポジトリとの連携のキモ● 相手の持っているブランチが、単純に“リモートレポジトリ名/ ブランチ名”と言う名前のブランチに見える – "sfjp" という名前の付けられたリモート URL https://scm.users.sourceforge.jp/gitroot/sugi/try1 上の "dev" ブランチ → "sfjp/dev" (もしくは remotes/sfjp/dev)● リモートブランチはラベルを直接動かせない (チェックアウトし た場合、HEAD はブランチではなくコミットを直接指す)● コミットを追加する(その枝を伸ばす)時はリモートブランチを元 にローカルブランチを作る – 直接 push するならリモートと同名のブランチを作るとよい ● 例: git checkout -b dev origin/dev 36
  37. 37. 実際の操作: リモート編 (1) ● リモートから clone $ git clone host2.example.com:git/tryorigin/master origin First commit First commit master Add README.txt Add README.txt master Makefie automation Makefie automation HEAD HEAD clone autoupdate origin/autoupdate 37
  38. 38. 実際の操作: リモート編 (2) ● ローカルの master ブランチを変更 $ git commit -av -m Fix typoorigin/master origin First commit First commit Add README.txt Add README.txt master origin/autoupdate Makefie automation Makefie automation HEAD HEAD autoupdate master Fix typo 38
  39. 39. 実際の操作: リモート編 (3)● origin に push $ git push origin First commit First commit Add README.txt Add README.txt origin/autoupdate autoupdate Makefie automation Makefie automation HEAD master Fix typo Fix typo master origin/master push HEAD 39
  40. 40. 実際の操作: リモート編 (4)● リモートブランチを元にローカルブランチを 作成し、そこにカレントブランチを移動 $ git checkout -b autoupdate origin/autoupdate origin First commit First commit Add README.txt Add README.txt HEAD origin/autoupdate autoupdateautoupdate Makefie automation Makefie automation master Fix typo Fix typo master origin/master HEAD 40
  41. 41. 実際の操作: リモート編 (5) ● ローカルでバグフィクスしてmasterにマージ $ git commit -av -m Fix automation bug $ git checkout master $ git merge autoupdate origin First commit First commit Add README.txt Add README.txt origin/autoupdate autoupdate Makefie automation Makefie automationorigin/master Fix typo Fix typo Fix automation bug master autoupdate HEAD master merge autoupdate HEAD 41
  42. 42. 実際の操作: リモート編 (6) ● リモートの master が誰かに更新された origin First commit First commit Add README.txt Add README.txt origin/autoupdate autoupdate Makefie automation Makefie automationorigin/master Fix typo Fix typo Fix automation bug autoupdate Add License file master master merge autoupdate HEAD HEAD 42
  43. 43. 実際の操作: リモート編 (7) ● origin を pull (の fetch 部分の様子) $ git pull origin First commit First commit Add README.txt origin/autoupdate Add README.txt autoupdate Makefie automation Makefie automation Fix typo autoupdateorigin/master Fix typo Fix automation bug pull Add License file (fetch) Add License file merge autoupdate master HEAD HEAD master 43
  44. 44. 実際の操作: リモート編 (8) ● origin を pull (の merge 部分) $ git pull origin First commit First commit Add README.txt origin/autoupdate Add README.txt autoupdate Makefie automation Makefie automation Fix typo autoupdateorigin/master Fix typo Fix automation bug Add License file Add License file HEAD master merge autoupdate master merge origin/master HEAD 44
  45. 45. 実際の操作: リモート編 (9) ● origin に変更をふたたび push $ git push origin First commit First commit Add README.txt Add README.txt autoupdate origin/autoupdate Makefie automation Makefie automation Fix typo autoupdate Fix typo Fix automation bug Fix automation bug Add License file Add License fileHEAD push merge autoupdate merge autoupdate master origin/master HEAD merge origin/master merge origin/master master 45
  46. 46. Pushの補足と注意● 基本的に push する前に pull すること!● 標準では HEAD の指しているブランチだけが相手に送られ、同名のリ モートブランチラベルを移動する – 送るブランチ、動かすブランチの都度指定は可能。設定変更して標準で送る物を 変更することもできる – push によって相手に新しいブランチを作成する事もできる (空のレポジトリに push する場合は指定が必須)● Push 先が作業ツリーを持っている場合(bare でない場合)、標準では相手 の HEAD のさしているブランチは動かせない● 相手のブランチを動かすには、"FastForward" である必要がある – FastForward = 前方向に動かすだけで新しい位置に行けること – マージの場合は、ちゃんとツリー上で繋がっている必要がある (手で同じ修正を 入れた場合はFast Forward にならない)● 最初は相互に pull だけ使ったほうがわかりやすい 46
  47. 47. レポジトリ間連携プロトコル● アクセスプロトコルは色々 – ローカルファイルシステム (fsのアクセスコントロールに従う) – git オリジナルプロトコル (認証がないので基本 read-only) – ssh (ログイン先のアクセスコントロールに従う) – HTTP(S) (プロトコル2種類: smart, dumb. R/W 可)● git URL の例 – (LocalFS) /home/sugi/works/git/try1 – (ssh) host2:works/git/try1 sugi@host2.jp:/gitroot/try1 – (git) git://host2.example.com/gitroot/try1 – (HTTP) https://scm.users.sourceforge.jp/gitroot/sugi/try1 47
  48. 48. git refs(参考と補足) 48
  49. 49. 鉄板の参考書籍: 入門Git● 秀和システム ISBN:978-4798023809● 現在の Git の開発者/プロジェクトリーダ/メンテナである 濱野純 氏が書いた書籍● 題名と違い、ぜんぜん入門だけじゃない● 設計理念から内部構造、具体的な操作と例、Tips、コミュニティ まですべて詰まってます 49
  50. 50. 参考文書● man 7 gittutorial (日本語訳) http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/gittutorial.html● サルでもわかるGit入門 http://www.backlog.jp/git-guide/● A successful Git branching model (日本語訳) http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html● Pro Git http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/gittutorial.html● Git Cheat Sheet https://na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf 50
  51. 51. 設定など● git config --global user.name "名前" git config --global user.email メールアドレス – この2つは必ず設定しておこう● git config --global color.ui auto – これを設定しておくと、各種出力が色つきになって見やすい● git config --global alias.st status git config --global alias.co checkout – よく使うコマンドは省略形のエイリアスを作っておくと楽になる 51
  52. 52. 覚えておくと便利なサブコマンド等● reset: HEAD と HEAD が指しているブランチラベルを好きな場所 に移動する – --hard を付けると作業ツリーも更新する – git reset --hard だけなら現在の作業ツリーをリセット● gui: tk 版 gui を起動する。Index の状態を表示/操作するには便利● mergetool: 衝突時に gui のマージツール (meld, qdiff3 など) を起動 してマージを行う。エディタで編集するよりこちらの方が楽な場合 も多い● revert: 指定したコミットを反転したコミットを作成し、修正を打 ち消す● commit には必ず -v をつけよう。ログ編集時に Diff が確認できる 52
  53. 53. Git のホスティングサービス● SourceForge.JP● github.com● Google Code● SourceForget.net● repo.or.cz● 他にも海外にはたくさん 53

×