俺がgithubを使うにあたってgitを理解しようとした話3
そもそもなんでgitを理解せねば、というかこんなトラブルをことが起きてしまったのか、というお話。
何をしようとしていたか
https://github.com/smlsharp/smlsharp:githubのSML#レポジトリ]のバージョンが1.1.0だったので1.2.0と2.0.0にアップデートしようとしてました。 |
何をやらかしたか
バージョン1.2.0のアップデートは素直にいき、githubへ反映できました。
しかしその次が問題。
間違えて2.0.0の変更を1.1.0にかけてしまい、手元のmasterがリモートのmaster(oring/master)と別ブランチ状態に。
詳細は、いらないファイルを消し忘れたり、README.mdを消してしまったりをして、何度かやり直してパニックになっているうちに、こんな間違ったpush状態に陥っていました。
解決法
解決方法はいろいろありますが、今回は手元のmasterをresetしてv1.2.0に指し直してから、2.0.0をコミットしました。*1
図とコマンドは下記。
ちなみにこの時の自分ではどうしていいかわからずに*2、mzpさんとbleisさんにご指導を仰ぎました。
結果としてgitについていろいろ知ることになりました。
$ git reset --hard v1.2.0 # masterのHEADとファイル内容をv1.2.0へセット
反省
- gitはコマンドのコピペじゃなくて中身を理解してつかう
- たいていは痛い目を見てから覚える
- git reset --hardはファイル内容も書き換えるので慎重に
- rebase -iでHEADが指してるコミットは消せないっぽい
- gitのコミットはrebase等で消しても見えなくなるだけで、タグ・ブランチなどで差されていないとそのうちGCされて本当に消えるらしい
ロードバイクを買うときに必要なものリスト
去年の11月にロードバイクを買いました。
先々週、鈴鹿サーキットで走ってきました。
自転車購入を迷っている人のために、何が必要になるかをまとめたくなった。
- ◎:必須
- ○:あった方が良い
- △:人による
ロードバイクを買うにあたって必要なものリスト
- ◎ロードバイク
- もちろん必須ですね。僕は8万クラスの入門モデルを。スペックよりも色で選びました。この値段だとスペックなんて対して変わらないっていうのが結論です。
- ◎仏式空気入れ
- ロードバイクはタイヤのバルブが特殊+圧力計が必要なので専用の空気入れを買いましょう
- ◎工具(ドライバ、六角レンチ)
- 追加パーツをつけたりサドル調整をしたり、何かと必要です。
- ◎カギ
- お高いものですので、カギがないとコンビニに入るのも安心できません。自転車単体のロックだと持ち上げて持っていかれる可能性もあるので、木やフェンスなどに引っ掛けられる長いチェーンロックがオススメです。
- ◎ライト
- 道交法上で必須です。夜に田んぼ道など真っ暗な道を走ることが多いのなら大きくて明るいライトがいいです。そうでもないなら、単3電池1本くらいで済むライトでいいでしょう。
- ◎ヘルメット
- ロードバイクはスピードが出ます。死にたくないなら買うべきです。
- ○自転車スタンド
- スタンドがついていないので、壁に立てかけるか専用スタンドを買いましょう
- ○サイクルコンピューター
- 安いものでも速度・距離・タイムがわかるのは楽しい。距離を走る人ほど楽しみが増します。街乗りだとそうでもないかな。
- △メンテナンスオイルとクリーナー
- ガッツリメンテして自転車のピカピカ度を楽しみたい人にはいるかと。面倒な場合はお店でお金を払ってメンテしてもらうという手も。
- △ズボンの裾止め
- ジーパンなど普通の長ズボンで乗る場合は、チェーンでズボンが汚れるので必須。反射板がついてるタイプが安全面も増してよいかな。
レースに出るにあたって必要なものリスト
まとめ
- ロードバイクを買おうと思うなら、自転車本体(n万)+2〜3万はなんだかんだ必要
- レースに出る場合の必須な物は少ないけど、あればあるほど楽しめる。
- mzpさんがおっしゃられた名言「せっかくのレース、やりたいことをやる」
- 自転車楽しい(^ω^ 三 ^ω^)
俺がgithubを使うにあたってgitを理解しようとした話2
追記:
bleisさんによると「HEADはなんらかの参照を指すもので、コミットそのもを指すものではない」との指摘をいただきました。
図ではコミットを指していますが正しくはコミットのポインタを指します。
ただし、図の修正がめんどい*1のでご了承ください。
追記その2:
すばらしい図解をされているサイトを発見したので掲載させていただきます。コミットとコミットのポインタとHEADの位置などが参考になるだけでなく、各コマンドについてを図でひじょうにわかりやすく説明してくれています。
図解 Git
git話2回目。
hgを使っていた経験からpullやpushなど基本の意味はわかる。
しかしgitを使っていると概念の違いや謎のワードがたくさん出てくる。
今日はそれについても書き留めとく。
gitのポインタ
gitはコミットのポインタとして親コミットを指している。
よって図のように、各コミットの表す矢印はコミットの時系列と逆向きになる。*2
図はA→B→Cと変更していき、途中のBからbranchを作った状態。
HEADって何
今、手元のファイルがどこのコミットにいるのかを示す。
例えば上図だとCのポイントが現在のgitの状態。
もちろんそこから変更点があれば`git status`や`git diff`で確認できる。
HEAD^とかHEAD~って何者
HEADからコミットのポインタをいくつか辿った状態。
HEADはHEADポインタが指すそのもの。
HEAD^やHEAD~はHEADからポインタを1個辿ったもの。
HEAD^^は2個辿ったもの。。。。以下続く。
例えば上図の状態で`git checkout HEAD^`を行うと下図のような状態にHEADが移動し、ファイルを古い状態に戻すことができる。
masterって何
branchの1つでメインブランチに付けられる名前。
ブランチ名なのでcheckoutやpush・pullなどで指定ができる。
たとえばmasterブランチだけをとあるGithubレポジトリにpushしたければ、以下のようなコマンドになる。
$ git push git@github.com:hoge/fuga.git master
branchって何
枝分かれ。
途中で違った変更を行いたいときに支流として存在する変更点。
`git branch
`git branch`で現存のブランチの一覧を確認できる。
`git branch -d
もちろん、`git chekcout
例えば`git checkout branch_name`をすると、下図のようにHEADが移動する。
まとめ
- git checkout
で特定のブランチへ - git branch
- ブランチの一覧表示
でブランチの作成 - -d
でブランチの削除
- HEADは現在の状態を指すポインタ
- この程度のことすらわからないgit力に絶望した!!
俺がgithubを使うにあたってgitを理解しようとした話1
最近githubを使う機会が多いです。
まったくコードを書かなかった俺にとっては天から矢がふるレベルの珍しさ。
そこでこのシリーズでは、gitやGithubを使うにあたってのtipsをメモしていこうと思います。
問題点:pushしたcommitとGithubアカウントが関連付けされない
画像のようにGithub上でGithubアカウントの画像が表示されればOKです。
最初はなぜかこの関連付けがされずに、commit時の名前の名無し画像が出るだけでした。
解決法
Githubはアカウントとの関連付けを、Githubアカウント登録メールアドレスとcommitメールアドレスで行っているようです。
この2つを同じメールアドレスに設定しましょう。
.gitconfigへの設定
下記コマンドを叩くか、~/.gitconfigを編集し[user]を追記します。
この方法では全gitコマンドへ影響します。
レポジトリごとに設定を変えたい場合は--globalオプションを外したり。
$ git config --global user.email hoge@gmail.com
[user] email = hoge@gmail.com
Thanks
- @mzp
- @bleis
*1:何度もProfileのPublic Email Addressを編集してはまっていたバカがこちらの日記の主になります
金沢旅行に行ってきました
@athos0220が写真を撮りにどこか行きたいと言い出したので、@athos0220、@mzp、@momocusと金沢旅行に行ってきました。
2泊3日の楽しい旅行でした。
1日目
レンタカーを借りて近江町市場
よんたの1年ぶり運転で移動。
駐車やら怪しくて他メンバーがヒヤヒヤしてました。
市場ではコロッケや海鮮丼を食べました。
夜のおつまみも購入。
予想以上に外人が多くて驚きました。
金沢も観光スポット化してるのかー。
- mzpは電源のあるカフェに行きましょうと言ってたけど、却下しました。
2日目
3日目
まとめ
- 石川県の海の幸はうますぎる
- 金沢周辺、運転は荒い人多かったけど車の絶対数が少なくて運転しやすい
- 久しぶりに運転したけど事故なく旅行を終えれてよかった
- mzpの進捗よかったそうです
Xubuntu 64bitにおけるSML# 2.0.0のビルド
SML#2.0.0がリリースされました.
せっかくなのでパッケージではなくソースからビルド.*1
というわけでクリーンなXubuntu 12.04LTSでSML#をビルドしたときの経験まとめです.*2
32bit環境の整備
C/C++の32bitライブラリを用意しておきます.
GMP,LLVM,SML#のビルドに必要.
たぶんこれで依存するg++も入ってくれる.
# aptitude install gcc-multilib g++-multilib
GMPライブラリのビルド
通常のGMPライブラリパッケージ(libgmp-dev)は64bitビルドされているので,SML#用に32bitでビルドする.*3
configureを走らせるときにABI=32オプションをつけて,32bitビルドを指定.
$ wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz $ lzip -d gmp-6.0.0a.tar.lz $ tar xf gmp-6.0.0a.tar $ cd gmp-6.0.0a # mkdir /opt/gmp32-6.0.0 # ./configure ABI=32 --prefix=/opt/gmp-6.0.0 $ make && make check # make install
追記:runtimeでロードできるようにldconfのパスに加えて、リロードする。
# echo '/opt/gmp32-6.0.0/lib' > /etc/ld.so.conf.d/gmp32.conf # ldconf
LLVMのビルド
配布されているUbuntu系用のLLVMバイナリは64bitビルドです.*4
なので自力で32bitビルド.
また,SML#は現時点での最新版であるLLVM3.4 32bitを必要としますので,多くのディストリビューションで自力ビルドが必要かと思います.
$ wgetやら解凍やら省略 # mkdir /opt/llvm32-3.4 $ ./configure CC='gcc -m32' CXX='g++ -m32' \ --build=i686-pc-linux-gnu \ --prefix=/opt/llvm32-3.4 $ make # make install
必要なライブラリ郡その他
なんか知らないけど./configure中に怒られたので,libzやlibinfoをいれる.
INSTALLとかの説明には書いてないけど必要なら仕方ない.
# aptitude install libz-dev # aptitude install libinfo-dev
SML#のビルド
ここまでくればSML#をビルドするだけ!
fast-buildオプションが行方不明なのでコーヒーでも飲みながらまったり待ちましょう.
必要なオプションは32bit・GMP・LLVMの指定です.インストール先のprefixはお好みで.
オプション長すぎぱない.
$ wgetやら解凍やら省略 # mkdir /opt/smlsharp-2.0.0 $ ./configure CC='gcc -m32' CXX='g++ -m32' \ LD='ld -m elf_i386' \ LDFLAGS='-L/opt/gmp32-6.0.0/lib' \ CPPFLAGS='-I/opt/gmp32-6.0.0/include' \ --with-llvm=/opt/llvm32-3.4 \ --prefix=/opt/smlsharp-2.0.0 $ make # make install
まとめ
- 必要が無い限りSML#はビルドパッケージを使うと楽
- SML#をビルドするなら32bitOSが楽
- やれるものならやってみろ
Functional花見2014に参加してきまし
これに,前日の場所取りからお花見まで参加してきました.
なやばし夜市
なやばし夜市という日本酒祭りがあったのでとりあえず行ってみる.
すでに日本酒で酔っ払う.
夜の部
開始
桜の下は半分くらいしか埋まっておらず,無事にブルーシートを広げる.
夕方から花見してたグループと,泊まって場所取りするグループが半々くらいでした.
早速コンビニ買い出しとピザ注文を実行
ピザハットは22:30注文で23:00受け取りができました.
プロのラブライバーの方はラブライブコラボの箱が切れてても注文するし,ガチャで数秒1万円を溶かすし,すごいと思いました.
夜更け
寝袋で就寝.
寝転がって見る夜桜が綺麗でした.
銀シートがあれば外でも暖かいし背中もいたくなかったです.
首が痛くなり枕を持ってくればよかったと後悔.
あと隣の大学生グループの人狼が一晩中うるさくて,寝るのに邪魔でした.
そうでなくとも酔っぱらいばかりなのでうるさいです.
耳栓があったほうが良かったなと後悔.
夜明け
朝日が綺麗だったみたいですが寝てて見逃しました.
皆は朝ごはんはコンビニでカップ麺やおでんを食べてました.