SlideShare a Scribd company logo
1 of 22
Git 入門 Part 2
遠隔編
か (@ka_, kaosf)
.gitignore について
●
まともにプロジェクト管理するなら必要
●
.gitignore に指定したものは無視される
– ファイルでもディレクトリでも
– メタキャラクタが指定可能
– 「生成物」は原則無視する
●
*.o ファイルなど
●
何が生成物なのかをきちんと知ろう
.gitignore の書式
●
一行に一指定
●
メタキャラクタの仕様はシェルスクリプト
のそれと同じ
●
.gitignore のあるディレクトリ以下に適用
●
詳しくは .gitignore でググろう
.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 はアプリ生成の際に作られる
リポジトリの作法
●
ソースコードと目的物の「作り方」のみ管理
●
「作り方」は README に正確に書こう
– 長くなるなら別ファイルに その辺は臨機応変
●
パスワードや秘密鍵に相当するものが
紛れ込まないよう注意
– 環境変数を利用すると楽に隠せる
– 環境ごとに逐一ファイルを用意するのもアリ
何かあっても何とかなります
●
秘密のファイル入りでコミットが進んだ
– 過去のコミット全てから特定のファイルだけ
削除し尽くすことも出来る
●
.gitignore に追加したけど既に管理下にある
– 普通に削除してその削除をコミットする
– git rm <some file>
– git rm -rf <some directory>
聞くは恥ですらない
●
聞かぬは一生の不便
●
でも案外調べれば何とかなる
●
@ka_ に聞いてくれれば
●
濱野純さんの本「入門 Git 」オススメ
– 「基本」ではなく「基礎」を固めるために
いっぱい練習
●
リポジトリを沢山作る
●
コミットを沢山する
●
色んな操作をやってみる
●
以降のリモートリポジトリを扱う操作でも
沢山手を動かしてみる
●
Bitbucket なら private repository 作り放題
リモートリポジトリを扱う
● 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 という特殊な参照が出来る
fetch についてもう少し詳しく
●
FETCH_HEAD が取得出来たら
– git reset FETCH_HEAD –hard
– これでリモートから取って来たことになる
●
一連の流れ ( 例 )
– git checkout br1
– git fetch origin br1
– git reset FETCH_HEAD --hard
もうちょっと柔軟に扱う
● git push origin br1 -f
– 歴史が失われても構わない
● git push origin :br2
– origin にある br2 を消し去りたい
– ローカルの「無」をリモートに押し付ける感覚
Win, Mac の人も同じ概念で
●
ダイアログで聞かれていることは同じ
●
何を,何処に,どうやって,を覚える
– <local-br> を origin の <remote-br> に -f で…等
Pull の注意点
●
Pull は Push の反対ではない
– Pull は Fetch と Merge の複合技
Git を多人数で使う
●
リモートリポジトリの公開設定
– Bitbucket はデフォルトでは private になる
– 無料枠では公開人数に制限があるので
public にする
●
Pull Request 実践
まずは Fork
●
Fork ( フォーク ) ?
– スプーンとナイフとフォークのフォーク
●
あの形のように分岐して派生していくイメージ
– リモート上での Clone 動作のこと
– GitHub でも Bitbucket でも出来る
– リポジトリの複製が自分の所有物として出来る
●
自分で好きなように弄れる
●
Fork元に影響は一切無い ( だって分散型だもの )
開発者二名の定義
●
大元のリポジトリの所有者
( フォークされた側 ) を A とする
●
リポジトリを複製した側
( フォークした側 ) を B とする
フォークしてクローンする
●
B が A のリポジトリをフォークする
●
git clone <B のリポジトリの URL>
クローン出来たらブランチ作成
●
トピックブランチ・フィーチャーブランチ
と言うこともある
– git checkout -b topic-1
●
ブランチ作成したらコミットを重ねる
●
それを origin にプッシュ
– 自分の所なので書き込みが可能
– git push origin topic-1
プルリクエストを作成
●
B の topic-1 を
A の master に
マージして欲しい
プルリクエストを受理
●
開発者 A側
– git pull <Bのリポジトリ > topic-1
– もしくは
git fetch <B のリポジトリ > topic-1
git merge FETCH_HEAD
●
それを自分のリポジトリにプッシュ
●
これで受理したことになる
●
Web上でマージを行うことも出来る
実際にやってみよう
プルリクエストを出し合う
●
各人 20130706-git-pr-<username>
というリポジトリを作る
●
自分以外の人のリポジトリをフォーク
●
プルリクエストの手順を行う

More Related Content

Similar to 20130706 git

@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込むKazumi IWANAGA
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門Yui Tomo
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presenKouhei Maeda
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことTakao Sumitomo
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithublion-man
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスRyo Sumasu
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Makoto Kawano
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 

Similar to 20130706 git (20)

Git 仕組み 入門
Git 仕組み 入門Git 仕組み 入門
Git 仕組み 入門
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
 
医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門医療データ解析者へ向けた Git・GitHub 入門
医療データ解析者へ向けた Git・GitHub 入門
 
Git_GiHub講習会.pdf
Git_GiHub講習会.pdfGit_GiHub講習会.pdf
Git_GiHub講習会.pdf
 
Git
GitGit
Git
 
Git handson
Git handsonGit handson
Git handson
 
Gitの設定
Gitの設定Gitの設定
Gitの設定
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
Git地図
Git地図Git地図
Git地図
 
ゼミGit
ゼミGitゼミGit
ゼミGit
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 

20130706 git