まぁ落ち着いてGitしようじゃないか

Have a break,Have a Git(Hub).

自己紹介

本日の予定

Git(Hub)のハンズオンですー

みなさんGitインストールは大丈夫!?

まずバージョン管理とは

@ITから引用。こんなことになってない?

どんな感じ?

Gitの読み方(YOMIKATAより)

Gitについて

環境確認

基本操作:ハンズオン

擬似的にプロジェクトを作ろう!

[仮想プロジェクト] あなたは新しいWebプロジェクトを任され、 Gitでソース管理をおこなうことにしました。 まずはWebページを作ることにしましょう! まず、コンソールを立ち上げます Windowsの場合、インストールしたシェルを起動します

バージョンを確認

バージョンの表示を行います
# git --version git version 1.7.11.msysgit.1
古い人居ないですよね?

設定値の設定と確認

# git config --global user.name "xxxxxx" # git config --global user.email "xxxx@xxxx.com" # git config --list --global xxxxxx=xxxxx xxxxxx=xxxxx
この設定が編集者として保存される

リポジトリを作る

ディレクトリを作りカレントディレクトリにします
# mkdir site # cd site # git init Initialized empty Git repository in xxxx
.gitが該当ディレクトリにできます

ファイルをリポジトリに登録する

ステージングする

該当ディレクトリにindex.htmlを作成します
# git add index.html
これにより、Gitが追跡を開始します

ステータスの確認

現在の変更状況を見ることができます
# git status

コミットを行う

「コミット」を行うことで、ファイルの変更を登録します
# git commit -m "create index page" [index.html]
それではindex.htmlを骨格を作成してコミットしてみましょう!
Windowsの方は日本語注意!

Gitの操作になれてみよー

スタイルシートを追加しておく

  • base.css を追加
    追加してコミット!
  • index.htmlから読み込むように修正
    コミット!
ステータス確認!
引数-aについて

コミットした履歴の確認を行います

# git log # git log -p # git log -1 # git log --pretty=fotmat: %s
パッチを確認したり色々できます
基本的な操作はここまで!

ちょっと休憩

シェルに疲れたあなたに

# git gui
tkなのでどのOSでも動作する(ハズ)
EclipseのEGitも優秀になってきた GitHub for WindowsもMetroでカワイイ VSでもプラグインが存在します

ソースの管理状況

みなさんのソース管理状況を聞いてみましょう

ブランチとタグについて

注:運用自体はプロジェクトで決まる

ブランチとタグ:ハンズオン

[仮想プロジェクト] あなたはサイトの骨組みまで作ったところで気付きました! そういえば、サイトに文字コードを設定していませんでした!

ブランチの表示と作成

# git branch # git branch bugfix [master] # git branch
-d 削除、-m 名称変更

作業するブランチを変更する

# git checkout bugfix # git branch
操作対象のブランチに「*」がつきます

開発作業を行います

ここからはさっきの通りです

  • base.css にcharsetを追加
    コミット!
  • index.htmlにcharsetを追加
    コミット!
コミットはこまめに

切り替えて状態を見る

Gitの対象ファイルの状態の確認

まずブラウザで作ったファイルを確認
# git checkout master
対象をmasterに切り替えて再表示 ファイルシステムは操作しているブランチの状態になっている

そんな時お客様から要望が!!!

ブランチを複数作成する

「ウチのSEO対策はどうなっとるんだね!」と指摘 bugfix はまだ完成してません。 なので master からブランチを作成
# git branch seo master # git checkout seo

ブランチ間の違いを確認

bugfixとseoの違い

index.htmlを修正、コミットして、 バグフィックス(bugfix)とお客さんの要望(seo)が完了しました。 現在の場所でバグフィックスとの違いを見てみます。
# git diff bugfix [seo]

マージしてみる

それではマージ作業を行なってみましょう!
# git merge bugfix
ステータスをみてみましょう。
コンフリクト(競合)しています。

コンフリクトの見方

ファイルはこのようになっています。
<<<<< HEAD :今操作中のブランチ ===== >>>>> bugfix :対象のブランチ
正しいように変更してコミットするのですが。。。
git mergetoolについて

修正が完了したのでリリースです

タグを打とう!

# git tag 0.0.0 # git tag
これにより納品したソースはいつでも手に入る
タグを打つ場所はプロジェクト次第です

お客さんにファイルを渡す

アーカイブして渡そう!

# git archive --format=zip 0.0.0 > site.zip
これにてリリース作業は完了!

masterを最新の状態にする

# git checkout master # git merge seo
rebaseについて

少し休憩

無駄なファイルをリポジトリに登録しない

Thumbs.db、.DS_Store、*.swpファイルを 登録しないようにしてみましょう! .gitignore ファイルを作って以下のように記述するだけ。
Thumbs.db .DS_Store *.swp

で、なんでGit(分散型)なの?

今までの部分はCVS,Subversion(集中型)を 使っていてもみなさん経験されているでしょう 分散型と呼ばれる部分の最大の違いはここからです 何か気づきませんでしたか?

いままでのはまだローカル

リモートが一元管理の場所

分散型はリポジトリの管理状態が分散してます ローカルに開発用のリポジトリ、 一元管理用にリモートのリポジトリがあります チームとの連携はリモートで行うことになります

Git(分散管理)の良さ

開発者にひじょーに有用な面が多い

Gitサーバを作る

リモートアクセス:ハンズオン

リモートに対してアクセスしてみましょう このプレゼンの資料はGitHubで管理して作りました GitHubから取ってきてローカルで見てみましょう

プレゼン資料を取ってくる

# cd .. # git clone git://github.com/secondarykey/presen.git # cd presen # git branch # git branch -r
リモートブランチに置かれる

何度もURL打つの煩わしいのでー

# git remote add remoteUrl git://github.com/xxxx
これで今後URLを打たなくて済みます ただし、今操作しているリポジトリへの設定になります

リモートブランチと同期を取る

手元のブランチに対して、 リモートのブランチを落としてきます
# git checkout -b handson master # git pull remoteUrl 20120901/github
ファイルを確認してみましょう!

リモートのリポジトリに送り込む

ハンズオンしないでね☆(ゝω・)

リモート(github)にリポジトリ(handson)を作成します そこに今回作成したリポジトリを送ります
# git push https://xxx/handson.git master
通常、git,sshを使うべきです

Gitというより分散はいい!

もっともっと便利なコマンドはあります!

ハンズオンお疲れ様でした

この位で基礎を終了します!