⼿手元で始めるgit - gitハンズオン -nato6933                          0
gitとは¤  バージョン管理理システム。¤  SVN(Subversion)を反⾯面教師として作られた。¤  テキストなら何でも管理理できる(⼀一応バイナリも管理理できる)。¤  軽量量、⾼高速¤  Webホスティングサービス(gi...
スタート前に(Mac/Linux)¤  Macの⼈人   ¤  Xcodeを⼊入れていれば既に⼊入っているはず¤  Linux   ¤  apt-get install git-core                         ...
スタート前に(Windows)¤  UTF-8ファイル名対応版Git for Windows  ¤  http://tmurakam.org/git/  からダウンロードしてインストール。                          ...
スタート前に(Windows続き)¤  ⽇日本語表⽰示のためにlessとnkfが必要  ¤  ファイル名対応版には要らないかも?  ¤  /Gitをインストールしたフォルダ/bin/に⼊入れる。  ¤  less.exeとnkf.exe...
スタート前に(Windows続き)¤  /インストールしたフォルダ/etc/profileに以下を追加  ¤  export GIT_PAGER=“nkf -s | less”¤  /ドライブ/User/ユーザー/.gitconfigを編...
⾔言葉葉の意味¤  リポジトリ  ¤  gitで管理理するファイルやディレクトリのまとまり。¤  branch(ブランチ)  ¤  リポジトリより⼩小さな単位のファイルやディレクトリのひとまとまり。¤  tag(タグ)  ¤  特定...
概念念図リポジトリ         feature             tag名master                   release    branch名                                    7
基本的な使い⽅方⼿手元で始めるgit             8
gitの設定¤  git config --global user.name “nato6933”¤  git config --global user.email nato6933@room6933.com   ¤  名前やアドレスはg...
初めてのリポジトリ¤  git init¤  適当なファイルを作る¤  git add .¤  git commit -m “ログメッセージ”                              10
基本の基本以下の繰り返しが基本 1.  ファイルを作る/編集する 2.  git add . 3.  git commit 4.  1に戻る                    11
git init¤  今いるディレクトリ(カレントディレクトリ)に.gitというディレ    クトリを作る。そこにリポジトリの情報が⼊入っていく。¤  カレントディレクトリで最初の1回しか実⾏行行しないコマンドなので、    「とりあえずプ...
add(追加する)/commit(留留める)¤  git add foo.txt   ¤  (特定の or 全ての)ファイルをステージする。¤  git commit -m “ログメッセージ”   ¤  ステージされたファイルを実際に更...
log¤  git log   ¤  commitの履履歴を⾒見見ることができる。¤  git log -1   ¤  前回のcommitのみをみる。数字の分だけログを⾒見見ることができる。commit 0f2e96938a2e64aa...
revert(戻る)¤  git revert HEAD  ¤  最新のcommitを取り消して元に戻す。  ¤  元に戻したことも歴史としてlogに刻まれる。  ¤  ※HEADは最新のcommit名を表す¤  git revert...
branch(枝)¤  git branch feature master   ¤  masterを元にしてfeatureというbranchを作る。¤  git branch   ¤  どんなbranchがあるか確認する。¤  git...
簡単な実践1.  git init               7.  git add foo.txt2.  vim foo.txt            8.  git commit -m “second                   ...
実践⼿手元で始めるgit             18
実践の内容¤  branchとmerge¤  競合への対処                   19
branch/mergeを使う実践                  20
とりあえずHTMLファイルを追加git initしたら以下のHTMLファイルを追加。名前はhoge.html。                  hoge.html         <html>         <head>          ...
hoge.html追加後¤  git add hoge.html¤  git status   ¤  現在のbranchの状態を確認してみる。¤  git commit -m “first commit”¤  git branch f...
現在の状態リポジトリ         featuremaster   hoge.html                   23
hoge.htmlを書き換え    <html>    <head>        <title>Hello git</title>    </head>    <body>        <h1>Hello git!!</h1>       ...
書き換え後¤  git status   ¤  statusが変わっているのを確認。¤  git add hoge.html¤  git commit -m “add Home”¤  git log   ¤  commitの確認  ...
現在の状態リポジトリ         feature                   hoge.html   hoge.html*master   hoge.html                                     ...
masterに戻って確認¤  git checkout master¤  git log   ¤  master branchのログは1つしかない。                                  27
merge(結合、合体)¤  git merge feature   ¤  featureでの変更更がmasterにmergeされる。¤  git log   ¤  masterのlogが2つになっているはず。             ...
現在の状態リポジトリ         feature                   hoge.html   hoge.html*master   hoge.html                                     ...
mergeには3種類ある。¤  直接  ¤  git merge feature¤  圧縮(squash)  ¤  git merge --squash feature  ¤  commitを一つにまとめてmergeする。¤  チェ...
競合への対処実践         31
branchの追加と書き換え1.  git checkout -b about master   ¤  masterからaboutというbranchを作っ   <html>       て、同時にaboutに移動する。            ...
現在の状態リポジトリfeaturemaster                    hoge.html(1) hoge.html(2)            about                    about2           ...
about2のhoge.htmlを書き換え1.  git checkout about2                                  <html>2.  hoge.html書き換え                 <hea...
現在の状態リポジトリfeaturemaster                    hoge.html(1) hoge.html(2)            about                                     ...
conflict(競合)1.  git checkout about2.  git merge about2   Auto-merging hoge.html   CONFLICT (content): Merge conflict in ho...
hoge.htmlの中を⾒見見てみる         <html>           <head>             <title>Hello git</title>           </head>           <body>...
競合の解消<html>                         <html>  <head>                         <head>    <title>Hello git</title>       <title...
競合を解消したらcommit¤  競合を解消したらadd, commit ¤  -m “ログメッセージ”は無くても良い。 ¤  gitが⾃自動的にログメッセージを⽤用意してくれる。 ¤  ログメッセージを書き換えたい場合にはつけても良良...
github⼿手元で始めるgit             40
githubの内容¤  githubアカウントを作る¤  初めてのgithub  ¤  githubでリポジトリを作りbranchを追加する。¤  cloneとforkとpull request  ¤  githubでpull req...
githubとは¤  ソースコードのホスティングサービスサイト。¤  gitを使ったコード管理理がWeb上でできる。¤  多くのOSSが、githubを中央リポジトリとして使っている。¤  無料料でアカウントを作ることができるが、パブリ...
githubアカウントの作成github                 43
githubのアカウントを作成¤  http://c-loft.com/blog/?p=1541  ¤  ⾮非常にわかりやすかったのでこちらに丸投げ。¤  sshのキーが必要です。                             ...
初めてのgithubgithub             45
githubでリポジトリを作るp  github上で実演  p  New Repository  p  リポジトリ名とリポジトリの説明を⼊入れるp  以降降、github上のリポジトリをリモートリポジトリ、⼿手元の    リポジトリをロ...
ローカルリポジトリを作る・pushする1.  git init2.  touch README3.  git add README4.  git commit -m “first commit”5.  git remote add origin...
現在の状態例例ローカルリポジトリ                   リモートリポジトリ          originmaster             master                               48
github上のリポジトリにbranchを追加1.  git checkout -b feature master2.  vim hoge.txt3.  git add .4.  git commit -m”add hoge.txt”5.  g...
現在の状態例例ローカルリポジトリ                    リモートリポジトリ           originmaster              master         feature             featu...
cloneとforkとpullgithub                  51
⾔言葉葉の意味¤  fork(フォーク)  ¤  元の開発者のリポジトリを⾃自分のリモートリポジトリとしてコピーし      て分岐させる。¤  clone(クローン)  ¤  まさにクローン。logやbranchを全てまるごとコピーし...
2⼈人⼀一組になって下さい。¤  まずAさんがhogeというリポジトリを作ります。適当にファイルを追加して下さい。Bさん  1.    github上でforkする。  2.    forkしたリポジトリをリモートリポジトリとして追加する。 ...
Bさんの⾏行行動※github上でforkした後。  1.  git clone git@github.com:accountB/hoge.git  2.  vim foo.txt  3.  git add .  4.  git commit ...
概念念図(Bさん⽤用)       Aさんのアカウント                   Bさんのアカウント       hoge        ⑤pull request      hoge                        ②...
Aさんの⾏行行動※pull requestをもらった後 1.  git checkout -b pull-request 2.  git pull git@github.com:accountB/hoge.git 3.  動作確認 4.  gi...
概念念図(Aさん⽤用)       Aさんのアカウント                      Bさんのアカウント       hoge           ①pull request      hoge  ②pull            ...
今度度はAさんとBさんを交代¤  別のリポジトリを作ってやってみる。¤  競合を発⽣生させてみても良良いかも。                         58
参考資料料¤  基本的なコマンド  ¤  http://room6933.com/mymemo/git/git-index.html¤  githubアカウントの作り⽅方  ¤  http://c-loft.com/blog/?p=15...
Thank you for listening.                           60
Upcoming SlideShare
Loading in …5
×

Git handson

836 views

Published on

gitハンズオン用資料ver2

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
836
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Git handson

  1. 1. ⼿手元で始めるgit - gitハンズオン -nato6933 0
  2. 2. gitとは¤  バージョン管理理システム。¤  SVN(Subversion)を反⾯面教師として作られた。¤  テキストなら何でも管理理できる(⼀一応バイナリも管理理できる)。¤  軽量量、⾼高速¤  Webホスティングサービス(github, Bitbucketなど)が複数存在。 1
  3. 3. スタート前に(Mac/Linux)¤  Macの⼈人 ¤  Xcodeを⼊入れていれば既に⼊入っているはず¤  Linux ¤  apt-get install git-core 2
  4. 4. スタート前に(Windows)¤  UTF-8ファイル名対応版Git for Windows ¤  http://tmurakam.org/git/  からダウンロードしてインストール。 この2個はON推奨。 フォルダ右クリックで実 ⾏行行できるようになる。 3
  5. 5. スタート前に(Windows続き)¤  ⽇日本語表⽰示のためにlessとnkfが必要 ¤  ファイル名対応版には要らないかも? ¤  /Gitをインストールしたフォルダ/bin/に⼊入れる。 ¤  less.exeとnkf.exeはググれば出てくるはず。¤  設定変更更 ¤  /etc/inputrcに以下を追加 ¤  set meta-flag on ¤  set input-meta on ¤  set output-meta on ¤  set convert-meta off ¤  set kanji-code utf-8 4
  6. 6. スタート前に(Windows続き)¤  /インストールしたフォルダ/etc/profileに以下を追加 ¤  export GIT_PAGER=“nkf -s | less”¤  /ドライブ/User/ユーザー/.gitconfigを編集(vista以降降) ¤  [color] ui = auto[i|8n] commitencoding=UTF-8 ¤  [core] editor=‘C:/Program Files(x86)/sakura/sakura.exe’ - CODE=4 autocrlf=false 5
  7. 7. ⾔言葉葉の意味¤  リポジトリ ¤  gitで管理理するファイルやディレクトリのまとまり。¤  branch(ブランチ) ¤  リポジトリより⼩小さな単位のファイルやディレクトリのひとまとまり。¤  tag(タグ) ¤  特定のバージョンのスナップショット 6
  8. 8. 概念念図リポジトリ feature tag名master release branch名 7
  9. 9. 基本的な使い⽅方⼿手元で始めるgit 8
  10. 10. gitの設定¤  git config --global user.name “nato6933”¤  git config --global user.email nato6933@room6933.com ¤  名前やアドレスはgithub上で開発者が問い合わせをしてきたりする時に使 われたりする。ソースコードに誰が改変を加えたのかもわかるようになっ ているので、実名が嫌な⼈人はTwitterのアカウント名等を使った⽅方が良良い。¤  git config --global color.ui “auto” ¤  表⽰示の⾊色付けを⾃自動設定する¤  git config --global --list ¤  確認 9
  11. 11. 初めてのリポジトリ¤  git init¤  適当なファイルを作る¤  git add .¤  git commit -m “ログメッセージ” 10
  12. 12. 基本の基本以下の繰り返しが基本 1.  ファイルを作る/編集する 2.  git add . 3.  git commit 4.  1に戻る 11
  13. 13. git init¤  今いるディレクトリ(カレントディレクトリ)に.gitというディレ クトリを作る。そこにリポジトリの情報が⼊入っていく。¤  カレントディレクトリで最初の1回しか実⾏行行しないコマンドなので、 「とりあえずプログラムを書く前に使う」と覚えておくだけでOK。 いわゆるおまじない。 12
  14. 14. add(追加する)/commit(留留める)¤  git add foo.txt ¤  (特定の or 全ての)ファイルをステージする。¤  git commit -m “ログメッセージ” ¤  ステージされたファイルを実際に更更新する。 ¤  ログメッセージは詳しく書こう。 ¤  fix bug、だけのログメッセージは意味がない。 旧foo.txt commit 新foo.txt 新foo.txt 更更新される add (ログメッセージ) 新foo.txt 13
  15. 15. log¤  git log ¤  commitの履履歴を⾒見見ることができる。¤  git log -1 ¤  前回のcommitのみをみる。数字の分だけログを⾒見見ることができる。commit 0f2e96938a2e64aa1ead685614d12468372fe9ac commit名Author: nato6933 <nato6933@room6933.com>Date: Wed Feb 29 13:57:32 2012 +0900 誰がcommitした? いつcommitした? first commit ログメッセージ ・commit名はそのリポジトリにおいて常にユニークな値を持つ。 (SHAというアルゴリズムによって⾃自動的に付けられる。) 14
  16. 16. revert(戻る)¤  git revert HEAD ¤  最新のcommitを取り消して元に戻す。 ¤  元に戻したことも歴史としてlogに刻まれる。 ¤  ※HEADは最新のcommit名を表す¤  git revert commit名 ¤  最新のcommit以外はcommit名を指定する。 15
  17. 17. branch(枝)¤  git branch feature master ¤  masterを元にしてfeatureというbranchを作る。¤  git branch ¤  どんなbranchがあるか確認する。¤  git checkout feature ¤  featureに移動する。¤  git checkout -b feature master ¤  masterを元にfeatureを作成し、そのままfeatureに移動する。¤  git branch -d feature ¤  branchの削除 ¤  当然だが気を付けて使うこと。 16
  18. 18. 簡単な実践1.  git init 7.  git add foo.txt2.  vim foo.txt 8.  git commit -m “second commit”3.  git add foo.txt 9.  git log4.  git commit -m “first commit” 10.  git revert HEAD5.  git log 11.  git log6.  vim foo.txt 17
  19. 19. 実践⼿手元で始めるgit 18
  20. 20. 実践の内容¤  branchとmerge¤  競合への対処 19
  21. 21. branch/mergeを使う実践 20
  22. 22. とりあえずHTMLファイルを追加git initしたら以下のHTMLファイルを追加。名前はhoge.html。 hoge.html <html> <head> <title>Hello git</title> </head> <body> <h1>Hello git!!</h1> </body> </html> 21
  23. 23. hoge.html追加後¤  git add hoge.html¤  git status ¤  現在のbranchの状態を確認してみる。¤  git commit -m “first commit”¤  git branch feature master¤  git checkout feature 22
  24. 24. 現在の状態リポジトリ featuremaster hoge.html 23
  25. 25. hoge.htmlを書き換え <html> <head> <title>Hello git</title> </head> <body> <h1>Hello git!!</h1> <ul> <li>Home</li> </ul> </body> </html> 24
  26. 26. 書き換え後¤  git status ¤  statusが変わっているのを確認。¤  git add hoge.html¤  git commit -m “add Home”¤  git log ¤  commitの確認 25
  27. 27. 現在の状態リポジトリ feature hoge.html hoge.html*master hoge.html 26
  28. 28. masterに戻って確認¤  git checkout master¤  git log ¤  master branchのログは1つしかない。 27
  29. 29. merge(結合、合体)¤  git merge feature ¤  featureでの変更更がmasterにmergeされる。¤  git log ¤  masterのlogが2つになっているはず。 28
  30. 30. 現在の状態リポジトリ feature hoge.html hoge.html*master hoge.html 29
  31. 31. mergeには3種類ある。¤  直接 ¤  git merge feature¤  圧縮(squash) ¤  git merge --squash feature ¤  commitを一つにまとめてmergeする。¤  チェリーピック ¤  git cherry-pick commit名 ¤  特定のcommitだけを取ってきてmergeする。 30
  32. 32. 競合への対処実践 31
  33. 33. branchの追加と書き換え1.  git checkout -b about master ¤  masterからaboutというbranchを作っ <html> て、同時にaboutに移動する。 <head> <title>Hello git</title>2.  hoge.html書き換え(1) </head> <body>3.  git add hoge.html <h1>Hello git!!</h1> <ul>4.  git commit -m”add Twitter” <li>Home</li>5.  git branch about2 about <li>Twitter</li> ※(1) <li>Mail</li> ※(2)6.  hoge.html書き換え(2) </ul> </body>7.  git add hoge.html </html>8.  git commit -m”add Mail” 32
  34. 34. 現在の状態リポジトリfeaturemaster hoge.html(1) hoge.html(2) about about2 33
  35. 35. about2のhoge.htmlを書き換え1.  git checkout about2 <html>2.  hoge.html書き換え <head> <title>Hello git</title>3.  git add hoge.html </head> <body>4.  git commit -m”add Research” <h1>Hello git!!</h1> <ul>5.  git log <li>Home</li> <li>Twitter</li> <li>Researh</li> </ul> </body> </html> 34
  36. 36. 現在の状態リポジトリfeaturemaster hoge.html(1) hoge.html(2) about hoge.html(1)* about2 35
  37. 37. conflict(競合)1.  git checkout about2.  git merge about2 Auto-merging hoge.html CONFLICT (content): Merge conflict in hoge.html Automatic merge failed; fix conflicts and then commit the result. ¤  hoge.htmlの中を覗いてみよう。 36
  38. 38. hoge.htmlの中を⾒見見てみる <html> <head> <title>Hello git</title> </head> <body> <h1>Hello git!!</h1> <ul> <li>Home</li> <li>Twitter</li> <<<<<<< HEAD <li>Mail</li> 競合箇所 ======= <li>Research</li> >>>>>>> about2 </ul> </body> </html> 37
  39. 39. 競合の解消<html> <html> <head> <head> <title>Hello git</title> <title>Hello git</title> </head> </head> <body> <body> <h1>Hello git!!</h1> <h1>Hello git!!</h1> <ul> <ul> <li>Home</li> <li>Home</li> <li>Twitter</li> <li>Twitter</li> <li>Mail</li> <li>Mail</li>   <li>Research</li> </ul> </ul> </body> </body> </html></html> どちらも残す ⽚片⽅方だけ残す 38
  40. 40. 競合を解消したらcommit¤  競合を解消したらadd, commit ¤  -m “ログメッセージ”は無くても良い。 ¤  gitが⾃自動的にログメッセージを⽤用意してくれる。 ¤  ログメッセージを書き換えたい場合にはつけても良良い。 39
  41. 41. github⼿手元で始めるgit 40
  42. 42. githubの内容¤  githubアカウントを作る¤  初めてのgithub ¤  githubでリポジトリを作りbranchを追加する。¤  cloneとforkとpull request ¤  githubでpull requestを送る、受け取る 41
  43. 43. githubとは¤  ソースコードのホスティングサービスサイト。¤  gitを使ったコード管理理がWeb上でできる。¤  多くのOSSが、githubを中央リポジトリとして使っている。¤  無料料でアカウントを作ることができるが、パブリックなリポジトリ しか作れない。¤  お⾦金金を払えばプライベートなリポジトリも管理理できる。 42
  44. 44. githubアカウントの作成github 43
  45. 45. githubのアカウントを作成¤  http://c-loft.com/blog/?p=1541 ¤  ⾮非常にわかりやすかったのでこちらに丸投げ。¤  sshのキーが必要です。 44
  46. 46. 初めてのgithubgithub 45
  47. 47. githubでリポジトリを作るp  github上で実演 p  New Repository p  リポジトリ名とリポジトリの説明を⼊入れるp  以降降、github上のリポジトリをリモートリポジトリ、⼿手元の リポジトリをローカルリポジトリと呼ぶことにします。 46
  48. 48. ローカルリポジトリを作る・pushする1.  git init2.  touch README3.  git add README4.  git commit -m “first commit”5.  git remote add origin git@github.com:nato6933/foo.git ¤  originという名前のbranchとして登録する。6.  git push origin master 47
  49. 49. 現在の状態例例ローカルリポジトリ リモートリポジトリ originmaster master 48
  50. 50. github上のリポジトリにbranchを追加1.  git checkout -b feature master2.  vim hoge.txt3.  git add .4.  git commit -m”add hoge.txt”5.  git push origin feature 49
  51. 51. 現在の状態例例ローカルリポジトリ リモートリポジトリ originmaster master feature feature 50
  52. 52. cloneとforkとpullgithub 51
  53. 53. ⾔言葉葉の意味¤  fork(フォーク) ¤  元の開発者のリポジトリを⾃自分のリモートリポジトリとしてコピーし て分岐させる。¤  clone(クローン) ¤  まさにクローン。logやbranchを全てまるごとコピーしてリモートリ ポジトリからローカルリポジトリに持ってくる。¤  pull(プル、引っ張る) ¤  他のリポジトリで加えられた変更更を現在の⾃自分のbranchにmergeす る。引っ張ってきて合体。 52
  54. 54. 2⼈人⼀一組になって下さい。¤  まずAさんがhogeというリポジトリを作ります。適当にファイルを追加して下さい。Bさん 1.  github上でforkする。 2.  forkしたリポジトリをリモートリポジトリとして追加する。 3.  ⼿手元で編集、add、commitする。 4.  pushする。 5.  github上でpull requestする。Aさん 1.  pull request⽤用のbranchを作ってそのbranchに移動します。 2.  pull requestをしたBさんのリポジトリをpullします。 3.  この状態で動作を確認します。 4.  問題がなければpull requestを受けたbranchをmergeします。 5.  githubにpushして終了了します。 53
  55. 55. Bさんの⾏行行動※github上でforkした後。 1.  git clone git@github.com:accountB/hoge.git 2.  vim foo.txt 3.  git add . 4.  git commit -m”edit foo.txt” 5.  git push origin masterあとはgithub上でpull requestする。 54
  56. 56. 概念念図(Bさん⽤用) Aさんのアカウント Bさんのアカウント hoge ⑤pull request hoge ②fork ③clone ①push ④pushhoge hogeAさんの Bさんのローカルリポジトリ ローカルリポジトリ 55
  57. 57. Aさんの⾏行行動※pull requestをもらった後 1.  git checkout -b pull-request 2.  git pull git@github.com:accountB/hoge.git 3.  動作確認 4.  git commit 5.  git checkout master 6.  git merge pull-request 7.  git push origin master 56
  58. 58. 概念念図(Aさん⽤用) Aさんのアカウント Bさんのアカウント hoge ①pull request hoge ②pull ③pushhoge hogeAさんの Bさんのローカルリポジトリ ローカルリポジトリ 57
  59. 59. 今度度はAさんとBさんを交代¤  別のリポジトリを作ってやってみる。¤  競合を発⽣生させてみても良良いかも。 58
  60. 60. 参考資料料¤  基本的なコマンド ¤  http://room6933.com/mymemo/git/git-index.html¤  githubアカウントの作り⽅方 ¤  http://c-loft.com/blog/?p=1541¤  gitチートシート⽇日本語版 ¤  http://www.textdrop.net/doc/git-cheat-sheet-ja/¤  おすすめの本(⼊入⾨門git) ¤  著者Travis Swicegood 翻訳  でびあんぐる ¤  http://www.amazon.co.jp/dp/427406767X/¤  無料料で公開されている本(Pro Git) ¤  http://progit.org/book/ 59
  61. 61. Thank you for listening. 60

×