SlideShare une entreprise Scribd logo
1  sur  42
Git入門
 2012/7/28
Hiroki Kouchi
本スライドの概要

初心者向けの内容

 Gitとはなんぞや

 実際にコマンド叩くとどうなるの

 必須な操作/覚えておきたい操作

などなどをお話します。
対象者

Gitを覚えたい人/使ってみたい人

Subversionならわかるって人

コマンド覚えたい人

Github使ってみたい人
まずは自己紹介
name : Hiroki Kouchi

age : 26 => 社会人4年目

Twitter : @_hkouchi
(最近変更しました)

work : iOS App Developer

hobby : Development => (iOS, Android, Web)
では本編へ
Gitとはなんぞや

分散バージョン管理システム

Linuxの中の人が開発

 Linuxカーネルのソースコード管理を
 目的として開発されたらしい
 (By Wikipedia先生)
分散型と集中型

集中型バージョン管理システム

 Subversionとか(他を知らない。。。)

 中枢となるリポジトリに各々がアクセス

 リポジトリが壊れると大変な事に
分散型と集中型
分散型バージョン管理システム

 Gitとか、Mercurialとか(よく知らない)

 ローカルにリポジトリが設置できる

 サーバーにもリポジトリが設置できる

 リポジトリ同士でマージをしながら
 開発を行なっていくイメージ
私のGitの印象

難しい
→さらっと見ただけで理解できなくて放置

GUIならなんとかなるんじゃね
→GUI全然   ってない

コマンド多すぎ/知らない単語多すぎ
私のGitの印象

GUIはあることにはある
(Macだと心配ないんだが・・・)

 Mac => SourceTree最強

 Windows => Tortoise gitあたりが妥当?

 EclipseのプラグインでEgitなんてのも
致命的だと感じてた部分

学習コストが高い

 現場でもGit使えない人が多い...

  そもそも使ってない現場が多いのでは

 Subversionと違って考え方が複雑

 どのコマンドで何が起きるのか
確かに難しいけど、
  学習コスト以上の
メリットがあるんです!
Gitの特徴

ローカルでも使える

プロトタイプ作成が簡単

リビジョン?なにそれおいしいの?

 Subversionはリビジョン単位で管理、
 Gitはコミット単位で管理。
Gitの特徴

コミットするファイルを指定できる
→コミットしたくないファイルは無視できる

履歴を自由に   る事が可能。

履歴を変更してしまう事も可能。

間違ってコミットしても取り消し可能。
圧倒的ではないか、
  我が軍は!
難しく考えなくてOK

チームで運用しても結局のところ・・・

 ファイルを編集する

 変更点をアップする

 他のメンバーは変更を落としてくるだけ
以上。
すいませんでした。

以下の2つを使いながら
説明していくことにしましょう。

 Terminal
  - コマンドを実行してみて覚えよう!

 SourceTree
  - GUIは結果確認には最適!
本日のゴール

ひとまずの目標はGithubへのアップ

 Githubは1人でも使える(無料)

 OSSの宝庫なので知っておくと便利

何となくの使い方として参考にどうぞ
では順番に
見ていきましょう
init

git init で初期化

  .gitというディレクトリが作成される
  中身は特に意識する必要はなし
  プロジェクトの直下で実行する

初期化後はgitコマンドでよしなに
commit

hoge.txtを編集する

git add hoge.txt # indexへ追加

  indexに追加されたファイルは
  commit対象となる

git commit hoge.txt
git add -A

  変更を全てindexに追加する


git commit -m “comment”

  引数にコメントがつけれる
  なくてもコメントはつけられます
remote
git remote add origin git://xxxx/hoge.git

  サーバーにあるgitリポジトリを登録する

  git:/ の場合も https:/ の場合もある
       /...         /...

  originって名前は規則ではない
  originは暗黙の了解になってるだけ
  (だったはず。。。)
pull

git pull

origin (remote) から変更を取得してmerge
→svn updateみたいなコマンド

似たようなコマンド→git fetch
変更を取得するが、mergeしない
clone
URLからソースコードを落とす場合に使用

svn checkout と同じようなコマンド

cloneした場合、
remoteが登録されている状態になってる

git clone git://xxxx/hogehoge.git

https://xxxx/hogehoge.git
ってURLの場合もある
push

git push origin master

  remoteのリポジトリへ変更を送信

  他のbranchをpushすることも可能

  ex). git push origin dev-kouchi
以上!
これでGithubが使える!
もうちょっとだけ

1人だとあまり必要ないけど、
チーム開発のときに以下の知識は必須です!

 branch => これは1人のときでも重要

 checkout

 merge
branch
ソースを枝分かれさせて、
別々に保存しておくことができる

git branch dev-kouchi #ブランチ作成

  defaultのブランチは master

  master <=> dev-kouchi間は、
  切り替えが可能

git branch #ブランチの一覧表示
checkout

branchの切り替えをコマンド

git checkout dev-kouchi #branchの切り替え

svn checkout ではないよ!
同じ単語でも意味が違うので注意されたし

git branch を実行するとbranchの一覧表示
HEAD

HEAD => 現在のbranchの事

HEAD^ => 現在のbranchの親

HEAD^^ => 現在のbranchの親の親

HEAD^^^...

主にcommitの取り消しや巻戻しのときに使用
remote:branch

リポジトリをpushしているわけなので、
remoteでも作成したbranchが保持される

git branch -r でリモートの確認ができる

 -a だとリモートもローカルも全部表示
branch がわかっていれば・・・

 git pull origin dev-kouchi

   dev-kouchiのみpull

   引数指定なしだと全部pullする
merge

(masterブランチを見てる場合)

git merge dev-kouchi

dev-kouchiの変更点をmasterに
反映させるのがmergeコマンド。

競合した場合の話はまた後程。
これだけ覚えれば十分!
他のコマンド

git reset #mergeの取り消し

git rebase #commitを1つずつ反映する

git stash #変更中ファイルを一時的に保存

git config #username, email, aliasの設定

git tag #tagの設定
個人でbranchを活用する

  新しい機能を追加するとき

  新しいライブラリ使ってみたいとき

  ちょっと違うUIで実装してみたいとき

 てな感じで、気軽に実験できるよ!
チームでの運用

私もどういう手法がいいのかは知りません!

何となく脳内にはあるけど、
実践したことがない・・・

 ↓非常にためになるので参考にどうぞ
 http://keijinsonyaban.blogspot.jp/2010/10/
 successful-git-branching-model.html
まとめ

今日覚えた事

 Gitとはなんぞや

 Gitの操作方法

 Githubへのpush方法
お疲れ様でした。

Contenu connexe

Tendances

Git flow概要紹介
Git flow概要紹介Git flow概要紹介
Git flow概要紹介y42sora
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめにGitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめにKazuki Sakai
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座貴一 末田
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方hibiki443
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみたYuto Suzuki
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理Masafumi Yokoyama
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようStudy Group by SciencePark Corp.
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フローshigetoshi komatsu
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 

Tendances (20)

Git flow概要紹介
Git flow概要紹介Git flow概要紹介
Git flow概要紹介
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
Gitの使い方あれこれ
Gitの使い方あれこれGitの使い方あれこれ
Gitの使い方あれこれ
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめにGitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フロー
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 

En vedette

Державна служба в Україні
Державна служба в УкраїніДержавна служба в Україні
Державна служба в Україніlugcpo
 
День заснування Луганської області
День заснування Луганської областіДень заснування Луганської області
День заснування Луганської областіlugcpo
 
Запобігання корупції в органах влади
Запобігання корупції в органах владиЗапобігання корупції в органах влади
Запобігання корупції в органах владиlugcpo
 
День Європи в Україні
День Європи в УкраїніДень Європи в Україні
День Європи в Україніlugcpo
 
Cучасне діловодство та архівна справа
Cучасне діловодство та архівна справаCучасне діловодство та архівна справа
Cучасне діловодство та архівна справаlugcpo
 
Запобігання та протидія корупції в Україні
Запобігання та протидія корупції в УкраїніЗапобігання та протидія корупції в Україні
Запобігання та протидія корупції в Україніlugcpo
 
Storyboard
StoryboardStoryboard
Storyboard10mgupta
 
Проблема имиджа в системе формирования корпоративной культуры
Проблема имиджа в системе формирования корпоративной культурыПроблема имиджа в системе формирования корпоративной культуры
Проблема имиджа в системе формирования корпоративной культурыlugcpo
 
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
Cambodia's outlook brief for 2013   possibilities and policy priorities for s...Cambodia's outlook brief for 2013   possibilities and policy priorities for s...
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...Solina Yean
 
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
Cambodia's outlook brief for 2013   possibilities and policy priorities for s...Cambodia's outlook brief for 2013   possibilities and policy priorities for s...
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...Solina Yean
 
Danish patients annette wandel 15 maj 2012 endelig
Danish patients annette wandel 15 maj 2012 endeligDanish patients annette wandel 15 maj 2012 endelig
Danish patients annette wandel 15 maj 2012 endeligallach
 
Культура общения
Культура общенияКультура общения
Культура общенияlugcpo
 
Romeo and juliet
Romeo and julietRomeo and juliet
Romeo and julietMike Smith
 
Роль органів місцевого самоврядування у процесі євроінтеграції
Роль органів місцевого самоврядування у процесі євроінтеграціїРоль органів місцевого самоврядування у процесі євроінтеграції
Роль органів місцевого самоврядування у процесі євроінтеграціїlugcpo
 
Сучасні тенденції формування кадрової політики України
Сучасні тенденції формування кадрової політики УкраїниСучасні тенденції формування кадрової політики України
Сучасні тенденції формування кадрової політики Україниlugcpo
 

En vedette (20)

Державна служба в Україні
Державна служба в УкраїніДержавна служба в Україні
Державна служба в Україні
 
День заснування Луганської області
День заснування Луганської областіДень заснування Луганської області
День заснування Луганської області
 
Запобігання корупції в органах влади
Запобігання корупції в органах владиЗапобігання корупції в органах влади
Запобігання корупції в органах влади
 
День Європи в Україні
День Європи в УкраїніДень Європи в Україні
День Європи в Україні
 
Cучасне діловодство та архівна справа
Cучасне діловодство та архівна справаCучасне діловодство та архівна справа
Cучасне діловодство та архівна справа
 
appcode_potatotips
appcode_potatotipsappcode_potatotips
appcode_potatotips
 
Запобігання та протидія корупції в Україні
Запобігання та протидія корупції в УкраїніЗапобігання та протидія корупції в Україні
Запобігання та протидія корупції в Україні
 
Storyboard
StoryboardStoryboard
Storyboard
 
Проблема имиджа в системе формирования корпоративной культуры
Проблема имиджа в системе формирования корпоративной культурыПроблема имиджа в системе формирования корпоративной культуры
Проблема имиджа в системе формирования корпоративной культуры
 
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
Cambodia's outlook brief for 2013   possibilities and policy priorities for s...Cambodia's outlook brief for 2013   possibilities and policy priorities for s...
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
 
Googlemaps tutorial
Googlemaps tutorialGooglemaps tutorial
Googlemaps tutorial
 
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
Cambodia's outlook brief for 2013   possibilities and policy priorities for s...Cambodia's outlook brief for 2013   possibilities and policy priorities for s...
Cambodia's outlook brief for 2013 possibilities and policy priorities for s...
 
Danish patients annette wandel 15 maj 2012 endelig
Danish patients annette wandel 15 maj 2012 endeligDanish patients annette wandel 15 maj 2012 endelig
Danish patients annette wandel 15 maj 2012 endelig
 
Культура общения
Культура общенияКультура общения
Культура общения
 
Vass
VassVass
Vass
 
Romeo and juliet
Romeo and julietRomeo and juliet
Romeo and juliet
 
Роль органів місцевого самоврядування у процесі євроінтеграції
Роль органів місцевого самоврядування у процесі євроінтеграціїРоль органів місцевого самоврядування у процесі євроінтеграції
Роль органів місцевого самоврядування у процесі євроінтеграції
 
Howard
HowardHoward
Howard
 
RESUME
RESUMERESUME
RESUME
 
Сучасні тенденції формування кадрової політики України
Сучасні тенденції формування кадрової політики УкраїниСучасні тенденції формування кадрової політики України
Сучасні тенденції формування кадрової політики України
 

Similaire à Git tutorial

一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 githubTomohiko Himura
 
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料ichikaway
 
社内勉強会用Gitのスライド#02
社内勉強会用Gitのスライド#02社内勉強会用Gitのスライド#02
社内勉強会用Gitのスライド#02nobuyasu tomura
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
バージョン管理
バージョン管理バージョン管理
バージョン管理Misa Kondo
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオンAyaka Ueda
 
20120125 チーム開発
20120125 チーム開発20120125 チーム開発
20120125 チーム開発s_taichan
 
20120125 チーム開発
20120125 チーム開発20120125 チーム開発
20120125 チーム開発Taichi Shindo
 
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 & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
なるべく噛み砕いたGit基礎講習
なるべく噛み砕いたGit基礎講習なるべく噛み砕いたGit基礎講習
なるべく噛み砕いたGit基礎講習石橋 啓太
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LTKouta Imanaka
 
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slidecosmo0920
 

Similaire à Git tutorial (20)

一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github日本androidの会 中国支部 29回勉強会 github
日本androidの会 中国支部 29回勉強会 github
 
Git&GitHub入門
Git&GitHub入門Git&GitHub入門
Git&GitHub入門
 
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
デザイナー、フロントエンジニア向けgithub勉強会ワークショップ資料
 
社内勉強会用Gitのスライド#02
社内勉強会用Gitのスライド#02社内勉強会用Gitのスライド#02
社内勉強会用Gitのスライド#02
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
バージョン管理
バージョン管理バージョン管理
バージョン管理
 
Git超入門
Git超入門Git超入門
Git超入門
 
githubハンズオン
githubハンズオンgithubハンズオン
githubハンズオン
 
20120125 チーム開発
20120125 チーム開発20120125 チーム開発
20120125 チーム開発
 
20120125 チーム開発
20120125 チーム開発20120125 チーム開発
20120125 チーム開発
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
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 & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
なるべく噛み砕いたGit基礎講習
なるべく噛み砕いたGit基礎講習なるべく噛み砕いたGit基礎講習
なるべく噛み砕いたGit基礎講習
 
オープンセミナー香川2012 LT
オープンセミナー香川2012 LTオープンセミナー香川2012 LT
オープンセミナー香川2012 LT
 
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
 
Gitのいろは
GitのいろはGitのいろは
Gitのいろは
 

Git tutorial

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n