gitまとめ

よく使うコマンドをまとめ。

使う前にやること

gitの設定
無視するファイルを指定
.gitignore

基本操作

リモート→ローカル

リモートの変更を手元に持ってくる

持ってくるが、ローカルブランチに反映はしない

git fetch
リモートの変更をローカルに反映する

git fetch で持ってきた変更を、ローカルブランチに反映する方法。二種類ある。

方法1:rebase
ローカルブランチで何も変更がない場合に使う。ローカルブランチを、リモートブランチの位置まで進めるイメージ。
対象のブランチ(hoge)に移動した後

git rebase origin/hoge

方法2:merge
ローカルブランチに変更を加えている場合に使う。その名の通り、ローカルブランチにリモートブランチの変更をマージする。
対象のブランチ(hoge)に移動した後

git merge origin/hoge
リモートブランチをローカルにチェックアウトする

リモートのhogeブランチを、ローカルのhogeブランチとしてチェックアウトする場合

git checkout -b hoge origin/hoge
ブランチをDelete & Create

ローカルのhogeブランチを消して作り直す

git co -B リフレッシュしたいブランチ名 取得元
【使用注意】ローカルブランチを、リモートブランチの状態で強制的に上書きする

未コミットのファイルがあっても無視し、強制的にリモートブランチの状態と同等にする
対処のブランチ(hoge)に移動して

git reset --hard origin/hoge

ローカルでの操作

ブランチを作る

ローカルブランチ hoge を作る

git branch hoge

新しくブランチを作り、そのブランチに切り替える
作る→移動するを1コマンドで。こっちのが楽

git checkout -b hoge

masterブランチを元にhogeブランチを作る場合

git checkout master(masterブランチに移動して)

git fetch(変更を持ってきて)

git rebase origin/master(持ってきた変更をmasterに反映して)

git branch hoge(それを元にブランチを作る)
ブランチを削除する
git branch -d hoge
変更されたファイルの一覧を見る
git status
変更されたファイルをコミット対象にする
git add ファイル名
git add を取り消す
git reset HEAD ファイル名
コミット間の差分を見る

コミットの指定はコミット番号で良い。最初の7桁だけで大丈夫らしい

git diff コミット番号 コミット番号
削除したファイルをstageに移動(add)する

削除したファイルは -all オプション付けないと駄目らしい

git add --all 削除したファイル
マージを取り消す

というか一つ前に戻るコマンドだけども

git reset --hard HEAD~
削除したファイルを戻す
git checkout HEAD -- ファイル名

ローカル→リモート

ローカルで作ったhogeブランチをリモートにpushする
git push origin hoge
リモートブランチhogeを削除する
git push origin :hoge
追従ブランチでないものを、リモートブランチにpushする

明示的にpush先を指定しないと駄目

git push --set-upstream origin push先のブランチ

GeolocationAPI 調査その1

ちょいとGeolocationAPIを使うことになったので、調べた事をメモする。
本家は下記。
Geolocation API Specification

日本語でまとめてある記事があるので参考にする。
JavaScriptで位置情報を取得する方法(Geolocation API)

使用するAPI

  • navigator.geolocation.getCurrentPosition
  • navigator.geolocation.watchPosition

共通の仕様

どちらのAPIを使うにしても、下記の形で使用する。本家より。

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, option);

位置情報の取得に成功した時は successCallback が呼び出される。失敗した時は errorCallback。あとはオプションの指定が可能。
getCurrentPosition と watchPosition の違いは、一度(呼ばれたとき)しか動かないか、その後も一定間隔で動き続けるかの違い。
getCurrentPosition は呼び出された時しか動かず、watchPosition は一定間隔で動き続ける。カーナビのようにリアルタイムで位置情報を更新する場合は watchPosition を使うことになるのかな。

watchPosition の一定間隔はオプションで指定する事になるのだろうか。おそらくオプションに指定出来る物は getCurrentPosition と watchPosition で変わってきそう。
watchPosition の動きを止める場合、IDを指定して止める。そのため、watchPosition は戻り値にIDを返すようだ。以下が本家のサンプルコード。

function scrollMap(position) {
      // Scrolls the map so that it is centered at (position.coords.latitude, position.coords.longitude).
}

function handleError(error) {
      // Update a div element with error.message.
}

var watchId = navigator.geolocation.watchPosition(scrollMap, handleError);

※ この例ではオプションを省略している。

上記を見ればわかるが、successCallback として scrollMap関数を渡している。scrollMap関数は、引数として position を受け取る。この中に位置情報等が保存されている。
仕様を見てみると

interface Position {
    readonly attribute Coordinates coords;
    readonly attribute DOMTimeStamp timestamp;
};

DOMTimeStamp は多分そのままの意味だろうけど、Coordinatesってなんだろ・・?

interface Coordinates {
    readonly attribute double latitude;
    readonly attribute double longitude;
    readonly attribute double? altitude;
    readonly attribute double accuracy;
    readonly attribute double? altitudeAccuracy;
    readonly attribute double? heading;
    readonly attribute double? speed;
};

ほむほむ。色々持ってる。double?とか言う怪しい型は無視して全プロパティの説明を読んでみる。

プロパティ 説明
latitude 緯度
longitude 軽度
altitude 高さ(メートル単位)
accuracy 緯度・軽度の精度(メートル単位)
altitudeAccuracy 高さの精度(メートル単位)
heading 方角。0〜360度。0を北とし、時計のように見る
speed 速度(メートル/秒)

ふーむ、北緯と南緯はどうやって表現してるんだろうと思ったら、マイナスで表現すると、下記に書いてあった。なるほど。
JavaScriptで位置情報を取得する方法(Geolocation API)

とりあえず基本はこんな感じ。