24
PBLのための はじめてのGit 李充根 2014/4/15 はじめてのGit 1

PBLのためのはじめてのGit

Embed Size (px)

Citation preview

Page 1: PBLのためのはじめてのGit

PBLのためのはじめてのGit

李充根

2014/4/15 はじめてのGit 1

Page 2: PBLのためのはじめてのGit

今日の流れ

1. Gitとは?

2. ひとりでGitをつかってみる

3. Gitホスティングサービスをつかってみる

1. リモートリポジトリをつかってみる

2. ふたりでGitをつかってみる

4. べんりなつかいかた

5. より実践的に

2014/4/15 はじめてのGit 2

Page 3: PBLのためのはじめてのGit

こんな経験

• ソースを戻したい

2014/4/15 はじめてのGit 3

先週

今週

Page 4: PBLのためのはじめてのGit

こんな経験

• どれが最新かわからない

• 間違って上書きした

2014/4/15 はじめてのGit 4

ないですか?

Page 5: PBLのためのはじめてのGit

1. Gitとは?

• 分散型バージョン管理システム(VCS)の一つ

– 非分散型(集中型)• CVS

• Subversion

– 分散型• Git

• Mercurial

• 何が違う?そもそもバージョン管理システムって?

2014/4/15 はじめてのGit 5

Page 6: PBLのためのはじめてのGit

研究室での開発というと

• コピペ駆動開発

• USBメモリ管理システム

• NASバージョン管理システム

……

ダメ!絶対!!

正しい開発手法を!

2014/4/15 はじめてのGit 6

Page 7: PBLのためのはじめてのGit

バージョン管理システム

• 読んで字のごとくファイルのバージョンを管理するシステム

2014/4/15 はじめてのGit 7

変更 変更

最新

一個古い

二個古い

最新 最新

一個古い

Page 8: PBLのためのはじめてのGit

集中型と分散型

2014/4/15 はじめてのGit 8

分散型集中型

その他色々形がある

Page 9: PBLのためのはじめてのGit

話を戻してGitとは?

• 分散型バージョン管理システム(VCS)の一つ

– 非分散型(集中型)• CVS

• Subversion

– 分散型• Git

• Mercurial

• とりあえずいくつか種類があることだけでも

2014/4/15 はじめてのGit 9

今日は説明しない(社畜になれば使うだろう)

: 履歴は全部サーバで管理

: 個々の環境で管理

Page 10: PBLのためのはじめてのGit

Gitの特徴

• ローカルリポジトリとリモートリポジトリ

– リモートに繋がなくてもコミットできる!

– 幅広い運用!

– 自由度が高い!

• と言われてもわからないと思うので

– とりあえずすげーやつ

– 最近のはやり

• ぐらいの認識でいいです

2014/4/15 はじめてのGit 10

Page 11: PBLのためのはじめてのGit

まとめ

• とりあえず自動で履歴を残してくれるすごいツール

• プロジェクト開発で普通に使う

• 種類はいくつかあるけどGitがはやってる

• 研究室でもソースの管理しよう

2014/4/15 はじめてのGit 11

Page 12: PBLのためのはじめてのGit

2. ひとりでGitをつかってみる

• 導入

– Windowsの場合• http://git-scm.com/

• 個々で実行ファイルをDLしてインストール

– Linuxの場合• yumやapt-getなどで

• ソースからmake

– Macの場合• わからない(自分で調べて)

• 多分MacPortsとかHomeBlewとか

2014/4/15 はじめてのGit 12

Page 13: PBLのためのはじめてのGit

基本的な使い方

• 現在いるディレクトリに新しいリポジトリを作る

– git init

• gitの管理領域にファイルを追加・更新する

– git add 【ファイル名】

• リポジトリに更新をコミットする

– git commit –m “【メッセージ】”

2014/4/15 はじめてのGit 13

Page 14: PBLのためのはじめてのGit

実際につかってみよう

• ホームディレクトリに新しいディレクトリ「moshiken」を追加する

• 新しいローカルリポジトリを作成する

• ディレクトリの中に入って「sample.txt」を作成

• gitに追加してコミットしてみる

• ファイルに文字を追加して再度コミットしてみる

2014/4/15 はじめてのGit 14

Page 15: PBLのためのはじめてのGit

ブランチをつかってみる

• ブランチとは

– Gitで別々の履歴を管理できる機能

– 例えばひとつのソースコードに対して、あるアルゴリズムを試したいけど本運用するかわからない時、ブランチを分けてソースを追加し、検証が終わった段階で統合することができる

2014/4/15 はじめてのGit 15

master(デフォルトのブランチ)

new-branch

git branch 【ブランチ名】 or git checkout –b 【ブランチ名】

Page 16: PBLのためのはじめてのGit

ブランチをつかってみよう

• さっき作成したリポジトリでブランチを作って切り替える

• 新しいブランチでコミットする

• もう一度masterブランチに戻って変更した修正がないことを確認する

2014/4/15 はじめてのGit 16

Page 17: PBLのためのはじめてのGit

3. Gitホスティングサービスをつかってみる

• Gitをもっと便利に使うためにホスティングサービスが有る

– リモートのリポジトリを共有できる

– 他の人と連携して使うことができる

• 有名なものに下記のものがある

– GitHub:Gitの火付け役

– Bitbucket:無料でプライベートリポジトリ使える

– GitBreak:日本製

2014/4/15 はじめてのGit 17

Page 18: PBLのためのはじめてのGit

3.1. リモートリポジトリをつかってみる

• 基本は最初の演習と同じ

• コミットした後に、今度はリモートに上げる

• リモートを操作するコマンドは次の通り

• ローカルのリポジトリをリモートに送る

– git push origin master

• リモートのリポジトリをローカルに反映させる

– git fetch

– git merge origin/master

2014/4/15 はじめてのGit 18

= git pull

Page 19: PBLのためのはじめてのGit

実際にリモートをつかってみる

• GitHubに登録する

• 新しいリポジトリを作成する

• 最初の演習で作ったリポジトリをpushしてみる

• ローカルのファイルを更新して再度pushしてみる

2014/4/15 はじめてのGit 19

Page 20: PBLのためのはじめてのGit

4. ふたりでGitをつかってみる

• お互いのリポジトリをpush-pullしあってソースコードを共有することができる

• せっかくGitHubに登録したので直接ローカル同士ではなくリモートを介して共有してみよう

• 基本は今までと同じ

• ただし、同じ場所を変更した時競合が起こりえる

2014/4/15 はじめてのGit 20

Page 21: PBLのためのはじめてのGit

二人で開発してみる

• ペアを組んでください

• まず片方がGitHubにリポジトリを作る

• ローカルにもリポジトリを作って、リモートにpushする

• もう片方はリモートからcloneする

– git clone 【URL】

• 片方がソースを編集してpushする

• もう片方はpullしてみて編集が反映されるか確認する

• 二人で同じ場所を編集して、競合が起こるとどうなるか確認する

2014/4/15 はじめてのGit 21

Page 22: PBLのためのはじめてのGit

便利な使い方

• Gitの状態を確認したい

– git status

• 今までのコミットログを見たい

– git log

• コマンドじゃ使いにくい

– SourceTree

– TourtoisGit

• 他の人がpushする前に確認したい

– pull request(今日は説明しない)

2014/4/15 はじめてのGit 22

Page 23: PBLのためのはじめてのGit

より実践的に

• Gitは色々と自由がきく分、修得するまでに時間がかかる

• 人によって使い方、構成等は違う

– git flow,github flowなど

• まずは今日覚えたことからつかって慣れていこう

• GitHub等便利なサービスがあるからそういったものは積極的に利用しよう

• わからないことは恐れずに聞いて

2014/4/15 はじめてのGit 23

Page 24: PBLのためのはじめてのGit

その他

• 本当はもっと色々教えたかったけど多分これ以上はパンクするだろうから残りはゆっくり復習しながら覚えてね

• 研究室内Gitサーバ建てたいとかやりたいことあったら気軽に相談してね

• もっと色々やりたいけどナンカ要望ある?

– TDD(テスト駆動開発)

– アジャイル(XP、スクラム)

– 継続的インテグレーション(Jenkins)

Let’s Try!!

2014/4/15 はじめてのGit 24