22
Git 入門 Part 2 遠隔編 (@ka_, kaosf)

20130706 git

Embed Size (px)

Citation preview

Page 1: 20130706 git

Git 入門 Part 2

遠隔編

か (@ka_, kaosf)

Page 2: 20130706 git

.gitignore について● まともにプロジェクト管理するなら必要

● .gitignore に指定したものは無視される

– ファイルでもディレクトリでも

– メタキャラクタが指定可能

– 「生成物」は原則無視する

● *.o ファイルなど

● 何が生成物なのかをきちんと知ろう

Page 3: 20130706 git

.gitignore の書式

● 一行に一指定

● メタキャラクタの仕様はシェルスクリプト

のそれと同じ

● .gitignore のあるディレクトリ以下に適用

● 詳しくは .gitignore でググろう

Page 4: 20130706 git

.gitignore の例● とある Andoid アプリのリポジトリ :

https://github.com/kaosf/android-app-template/blob/v1.1.0/.gitignore

● *.swp は Vim が自動生成するもの

● *~ は Emacs が自動生成するもの

● Thumbs.db, .DS_Store は断固無視すべし

● .classpath, .settings は Eclipse が

● bin, gen はアプリ生成の際に作られる

Page 5: 20130706 git

リポジトリの作法● ソースコードと目的物の「作り方」のみ管理

● 「作り方」は README に正確に書こう

– 長くなるなら別ファイルに その辺は臨機応変

● パスワードや秘密鍵に相当するものが

紛れ込まないよう注意

– 環境変数を利用すると楽に隠せる

– 環境ごとに逐一ファイルを用意するのもアリ

Page 6: 20130706 git

何かあっても何とかなります

● 秘密のファイル入りでコミットが進んだ

– 過去のコミット全てから特定のファイルだけ

削除し尽くすことも出来る

● .gitignore に追加したけど既に管理下にある

– 普通に削除してその削除をコミットする

– git rm <some file>– git rm -rf <some directory>

Page 7: 20130706 git

聞くは恥ですらない

● 聞かぬは一生の不便

● でも案外調べれば何とかなる

● @ka_ に聞いてくれれば

● 濱野純さんの本「入門 Git 」オススメ

– 「基本」ではなく「基礎」を固めるために

Page 8: 20130706 git

いっぱい練習

● リポジトリを沢山作る

● コミットを沢山する

● 色んな操作をやってみる

● 以降のリモートリポジトリを扱う操作でも

沢山手を動かしてみる

● Bitbucket なら private repository 作り放題

Page 9: 20130706 git

リモートリポジトリを扱う● git remote add <nickname> <URL>

– 大抵 <nickname> は origin

● git push origin <local-br>:<remote-br>

– ブランチ名が同じなら :<remote-br> 省略可

● git pull origin <remote-br>● git fetch origin <remote-br>

– FETCH_HEAD という特殊な参照が出来る

Page 10: 20130706 git

fetch についてもう少し詳しく

● FETCH_HEAD が取得出来たら

– git reset FETCH_HEAD –hard

– これでリモートから取って来たことになる

● 一連の流れ ( 例 )

– git checkout br1

– git fetch origin br1

– git reset FETCH_HEAD --hard

Page 11: 20130706 git

もうちょっと柔軟に扱う● git push origin br1 -f

– 歴史が失われても構わない

● git push origin :br2

– origin にある br2 を消し去りたい

– ローカルの「無」をリモートに押し付ける感覚

Page 12: 20130706 git

Win, Mac の人も同じ概念で

● ダイアログで聞かれていることは同じ

● 何を,何処に,どうやって,を覚える

– <local-br> を origin の <remote-br> に -f で…等

Page 13: 20130706 git

Pullの注意点

● Pullは Pushの反対ではない

– Pullは Fetchと Mergeの複合技

Page 14: 20130706 git

Git を多人数で使う

● リモートリポジトリの公開設定

– Bitbucketはデフォルトでは privateになる

– 無料枠では公開人数に制限があるので

publicにする

● Pull Request実践

Page 15: 20130706 git

まずは Fork

● Fork (フォーク )?

– スプーンとナイフとフォークのフォーク

● あの形のように分岐して派生していくイメージ

– リモート上での Clone動作のこと

– GitHubでも Bitbucketでも出来る

– リポジトリの複製が自分の所有物として出来る

● 自分で好きなように弄れる

● Fork元に影響は一切無い (だって分散型だもの )

Page 16: 20130706 git

開発者二名の定義

● 大元のリポジトリの所有者

(フォークされた側 ) を Aとする

● リポジトリを複製した側

(フォークした側 ) を Bとする

Page 17: 20130706 git

フォークしてクローンする

● Bが Aのリポジトリをフォークする

● git clone <Bのリポジトリの URL>

Page 18: 20130706 git

クローン出来たらブランチ作成

● トピックブランチ・フィーチャーブランチ

と言うこともある

– git checkout -b topic-1

● ブランチ作成したらコミットを重ねる

● それを originにプッシュ

– 自分の所なので書き込みが可能

– git push origin topic-1

Page 19: 20130706 git

プルリクエストを作成

● B の topic-1 を

A の master に

マージして欲しい

Page 20: 20130706 git

プルリクエストを受理● 開発者 A 側

– git pull <B のリポジトリ > topic-1

– もしくは

git fetch <B のリポジトリ > topic-1

git merge FETCH_HEAD

● それを自分のリポジトリにプッシュ

● これで受理したことになる

● Web 上でマージを行うことも出来る

Page 21: 20130706 git

実際にやってみよう

Page 22: 20130706 git

プルリクエストを出し合う

● 各人 20130706-git-pr-<username>

というリポジトリを作る

● 自分以外の人のリポジトリをフォーク

● プルリクエストの手順を行う