Git handson
Upcoming SlideShare
Loading in...5
×
 

Git handson

on

  • 883 views

gitハンズオン用資料ver2

gitハンズオン用資料ver2

Statistics

Views

Total Views
883
Views on SlideShare
883
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Git handson Git handson Presentation Transcript

  • ⼿手元で始めるgit - gitハンズオン -nato6933 0
  • gitとは¤  バージョン管理理システム。¤  SVN(Subversion)を反⾯面教師として作られた。¤  テキストなら何でも管理理できる(⼀一応バイナリも管理理できる)。¤  軽量量、⾼高速¤  Webホスティングサービス(github, Bitbucketなど)が複数存在。 1
  • スタート前に(Mac/Linux)¤  Macの⼈人 ¤  Xcodeを⼊入れていれば既に⼊入っているはず¤  Linux ¤  apt-get install git-core 2
  • スタート前に(Windows)¤  UTF-8ファイル名対応版Git for Windows ¤  http://tmurakam.org/git/  からダウンロードしてインストール。 この2個はON推奨。 フォルダ右クリックで実 ⾏行行できるようになる。 3
  • スタート前に(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
  • スタート前に(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
  • ⾔言葉葉の意味¤  リポジトリ ¤  gitで管理理するファイルやディレクトリのまとまり。¤  branch(ブランチ) ¤  リポジトリより⼩小さな単位のファイルやディレクトリのひとまとまり。¤  tag(タグ) ¤  特定のバージョンのスナップショット 6
  • 概念念図リポジトリ feature tag名master release branch名 7
  • 基本的な使い⽅方⼿手元で始めるgit 8
  • 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
  • 初めてのリポジトリ¤  git init¤  適当なファイルを作る¤  git add .¤  git commit -m “ログメッセージ” 10
  • 基本の基本以下の繰り返しが基本 1.  ファイルを作る/編集する 2.  git add . 3.  git commit 4.  1に戻る 11
  • git init¤  今いるディレクトリ(カレントディレクトリ)に.gitというディレ クトリを作る。そこにリポジトリの情報が⼊入っていく。¤  カレントディレクトリで最初の1回しか実⾏行行しないコマンドなので、 「とりあえずプログラムを書く前に使う」と覚えておくだけでOK。 いわゆるおまじない。 12
  • add(追加する)/commit(留留める)¤  git add foo.txt ¤  (特定の or 全ての)ファイルをステージする。¤  git commit -m “ログメッセージ” ¤  ステージされたファイルを実際に更更新する。 ¤  ログメッセージは詳しく書こう。 ¤  fix bug、だけのログメッセージは意味がない。 旧foo.txt commit 新foo.txt 新foo.txt 更更新される add (ログメッセージ) 新foo.txt 13
  • 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
  • revert(戻る)¤  git revert HEAD ¤  最新のcommitを取り消して元に戻す。 ¤  元に戻したことも歴史としてlogに刻まれる。 ¤  ※HEADは最新のcommit名を表す¤  git revert commit名 ¤  最新のcommit以外はcommit名を指定する。 15
  • 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
  • 簡単な実践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
  • 実践⼿手元で始めるgit 18
  • 実践の内容¤  branchとmerge¤  競合への対処 19
  • branch/mergeを使う実践 20
  • とりあえずHTMLファイルを追加git initしたら以下のHTMLファイルを追加。名前はhoge.html。 hoge.html <html> <head> <title>Hello git</title> </head> <body> <h1>Hello git!!</h1> </body> </html> 21
  • hoge.html追加後¤  git add hoge.html¤  git status ¤  現在のbranchの状態を確認してみる。¤  git commit -m “first commit”¤  git branch feature master¤  git checkout feature 22
  • 現在の状態リポジトリ featuremaster hoge.html 23
  • hoge.htmlを書き換え <html> <head> <title>Hello git</title> </head> <body> <h1>Hello git!!</h1> <ul> <li>Home</li> </ul> </body> </html> 24
  • 書き換え後¤  git status ¤  statusが変わっているのを確認。¤  git add hoge.html¤  git commit -m “add Home”¤  git log ¤  commitの確認 25
  • 現在の状態リポジトリ feature hoge.html hoge.html*master hoge.html 26
  • masterに戻って確認¤  git checkout master¤  git log ¤  master branchのログは1つしかない。 27
  • merge(結合、合体)¤  git merge feature ¤  featureでの変更更がmasterにmergeされる。¤  git log ¤  masterのlogが2つになっているはず。 28
  • 現在の状態リポジトリ feature hoge.html hoge.html*master hoge.html 29
  • mergeには3種類ある。¤  直接 ¤  git merge feature¤  圧縮(squash) ¤  git merge --squash feature ¤  commitを一つにまとめてmergeする。¤  チェリーピック ¤  git cherry-pick commit名 ¤  特定のcommitだけを取ってきてmergeする。 30
  • 競合への対処実践 31
  • 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
  • 現在の状態リポジトリfeaturemaster hoge.html(1) hoge.html(2) about about2 33
  • 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
  • 現在の状態リポジトリfeaturemaster hoge.html(1) hoge.html(2) about hoge.html(1)* about2 35
  • 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
  • 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
  • 競合の解消<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
  • 競合を解消したらcommit¤  競合を解消したらadd, commit ¤  -m “ログメッセージ”は無くても良い。 ¤  gitが⾃自動的にログメッセージを⽤用意してくれる。 ¤  ログメッセージを書き換えたい場合にはつけても良良い。 39
  • github⼿手元で始めるgit 40
  • githubの内容¤  githubアカウントを作る¤  初めてのgithub ¤  githubでリポジトリを作りbranchを追加する。¤  cloneとforkとpull request ¤  githubでpull requestを送る、受け取る 41
  • githubとは¤  ソースコードのホスティングサービスサイト。¤  gitを使ったコード管理理がWeb上でできる。¤  多くのOSSが、githubを中央リポジトリとして使っている。¤  無料料でアカウントを作ることができるが、パブリックなリポジトリ しか作れない。¤  お⾦金金を払えばプライベートなリポジトリも管理理できる。 42
  • githubアカウントの作成github 43
  • githubのアカウントを作成¤  http://c-loft.com/blog/?p=1541 ¤  ⾮非常にわかりやすかったのでこちらに丸投げ。¤  sshのキーが必要です。 44
  • 初めてのgithubgithub 45
  • githubでリポジトリを作るp  github上で実演 p  New Repository p  リポジトリ名とリポジトリの説明を⼊入れるp  以降降、github上のリポジトリをリモートリポジトリ、⼿手元の リポジトリをローカルリポジトリと呼ぶことにします。 46
  • ローカルリポジトリを作る・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
  • 現在の状態例例ローカルリポジトリ リモートリポジトリ originmaster master 48
  • 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
  • 現在の状態例例ローカルリポジトリ リモートリポジトリ originmaster master feature feature 50
  • cloneとforkとpullgithub 51
  • ⾔言葉葉の意味¤  fork(フォーク) ¤  元の開発者のリポジトリを⾃自分のリモートリポジトリとしてコピーし て分岐させる。¤  clone(クローン) ¤  まさにクローン。logやbranchを全てまるごとコピーしてリモートリ ポジトリからローカルリポジトリに持ってくる。¤  pull(プル、引っ張る) ¤  他のリポジトリで加えられた変更更を現在の⾃自分のbranchにmergeす る。引っ張ってきて合体。 52
  • 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
  • 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
  • 概念念図(Bさん⽤用) Aさんのアカウント Bさんのアカウント hoge ⑤pull request hoge ②fork ③clone ①push ④pushhoge hogeAさんの Bさんのローカルリポジトリ ローカルリポジトリ 55
  • 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
  • 概念念図(Aさん⽤用) Aさんのアカウント Bさんのアカウント hoge ①pull request hoge ②pull ③pushhoge hogeAさんの Bさんのローカルリポジトリ ローカルリポジトリ 57
  • 今度度はAさんとBさんを交代¤  別のリポジトリを作ってやってみる。¤  競合を発⽣生させてみても良良いかも。 58
  • 参考資料料¤  基本的なコマンド ¤  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
  • Thank you for listening. 60