git初心者の自分が作業を更新できるようになるまで録

この記事はみす裏 Advent Calenderの5日目です。

でもこのブログについては深く考えてはいけないよ

www.adventar.org

焼酎の話とかでも離すかと思ったけど先日酒池肉林に行った折に二日酔いでやられたので、今日のところはgitについて話します。

 

なんでgitつかってるの

最近は相変わらずコミケに苦しんだり研究に進捗が出ないことに泣いたりしつつ、

コトノネドライブの画面なんかを頑張って作っているのですが。

 

最近自分でコードも書いたりしてたので自由に更新できたらなぁ…と思い、

うっかり「yukiさんgithubの使い方教えて」と言ってしまいまして。

その結果現在は元気に闇に飲まれよ!と創造の神器に鞭打たれて元気です。

 

で、苦しみつつgithub。使ってますが、ようやく自分の作業を反映できるように鳴りましたので、過去の自分がもやもやしていた部分をここらでまとめてみました。

 

まあ初心者的ですよ?基本的にはこっちを見たほうが早いでしょうし、間違いも多々ある気がしますが、まあひつまぶしにお付き合い下さいよ。

 

 なぜなにgit

...とまずは前提として自分が分かんなかった事をいくつか

gitHubはgitという進捗管理システムの1つにすぎない

そんなところからかよ!そんな所からだった。

gitと調べるとlabとかhubとか色々出てきまして謎だったんですが、要はバージョン管理システムの一つがgitというのですね。「お絵かきソフト」「表計算ソフト」的なレベルね。

 <追記:>システム管理ツールそのものをgitと呼ぶというのは語弊があったかも。svnとかmercurialとかノートにかくのでも色々進捗管理はできるけど、ソレを便利に扱いましょうねっていう方法の一つがgitですね

 

バックアップを取りたい時、普通は「ファイル自体をコピー/圧縮する」でしょ?でもgitは「セーブポイントごとに変更された事柄だけ記録する」わけ。「このtxtの5行目が変わって6行目が増えた」「この.pngが消えた」みたいにね。

これでコピペファイルを量産すること無く過去の作業履歴を保持できるわけよ。すげぇ。このセーブポイントを「commit」といのか。なるほどね

gitコマンドラインから操作できる

これもそんなとこからかよ!レベル。

 

gitを操作する方法は、web、git bashのようなCUIgithub for desktopやsourceTreeのようなGUIbashで操作した場合、リポジトリのフォルダに移動すると勝手にリポジトリを認識してくれる。

f:id:akisamoya:20161204022323j:plain

最初はGUIで操作してたんだが、こいつ衝突とかがあると直ぐエラー出すので、CUIでの操作も覚えたほうが自由度が多くてストレスたまらないと思う。いやほんと

③gitは指定したファイル中の変更を検知する

リポジトリってのは1つの作業フォルダ全体。たとえばコトノネのリポジトリを登録すると「kotononeフォルダを監視するよ!」となる。

この中で何かファイルを追加・削除・変更すると、gitさんはそれを検知して「ここ前と変わってるゾ」と教えてくれるわけだね。頭いいね

f:id:akisamoya:20161204022536j:plain

f:id:akisamoya:20161204022459j:plain

変更の例

 gitさんが教えてくれた変更に対して「じゃあこのファイルの変更を保存(=変更確定)するよ」ということをcommitというわけ。コミットしないと保存は確定されない

逆に変更をなかったコトにすることをdiscardという。これも使ったりする

④gitで自分が見ている現在地が「HEAD」

gitのリポジトリは、基本このcommitを繰り返し、電車の路線みたいに先へ先へと進んでいくのだな。

f:id:akisamoya:20161204020722j:plain

…それぞれの白丸が「機能Aを追加した駅」ー「機能Aのバグを取った駅」ー「素材B.jpgを足した駅」ー「機能Cを作った駅(最新)」  って感じ。右端の黒円は「まだcommitしてない変更」部分

  

git自身は路線を自由に動ける電車のようなもので、自分はその電車に乗っているってイメージだよ。水色のところだね。

 この電車がHEAD。git使ってるとでてくるけど、君がいま居る場所がHEADだよ。

HDDの読み取り部もヘッダって言うでしょ。

 

HEADが移動すると、手元のファイルの中身はそれにへんこうされるよ。

サイレントで。エディタ開きっぱのとき注意。

 

git説明サイトなどで「HEADが移動して…」などと言われたら、「乗ってる電車(いま参照しているデータ)が動いたんだな」となんとなく思えばいいよ。

⑤originってなんだよ

gitって全部オンラインで完結するもんだと思っていたのだが、少なくてもgitHubに関してはそうじゃなかった。

ローカルのファイル / ローカルブランチの各コミット履歴 

                          ⇅

リモートのファイル / リモートブランチの各コミット履歴 

こうなってる。

 

ローカルでブランチ作成/コミットを作ってもリモートに上げる(push)必要があり、

リモートのコミットはローカルに取り寄せて更新をかける必要があるわけ。

 

リモートが関わるとき、gitのコマンドには originという引数がつく。素直にremoteとかにしてくれればいいんだけど、リモートの内容が本筋ということらしい。originの意味が謎だったので、コレ知った時スッキリした。お前がかい

 

 

変更をマスターに取り込むまでの流れ

これが本編。

人によって環境違うから、リポジトリ管理者に使い方聞いたほうが良い。

コトノネ譜面チームはこれみて譜面足そう

1. ブランチを作る

いきなりmasterブランチにコミットを足すのは危ないため、作業用のブランチを作る

git branch akisamo 

これでmasterから分岐した、akisamoって名前のブランチがローカルに出来る。

2.実際に作業する

ここは頑張るしかない。がんばれ

コトノネ譜面でいえば、譜面ファイルをassetに追加して、譜面名をソースコードに入れるとかだろう

3.作業内容を保存(commit)する

git commit -m "murakumo_add"

最後の引数はコミットの名前。git for Desktopで見たほうが変更ファイルが一覧されるのでわかりやすいかもしれない。変更を保存したいものだけ選択して、commit名を入れてセーブする

 4.最新版の内容を取り込む準備をする

さて、ある程度akisamoブランチにcommitをして、ではmasterブランチにいざ!この変更を反映してもらいたい。

でも、masterには他の人も別の機能を加えている(コミットをしている)。akisamoブランチにはその情報がない。

akisamoブランチの最新版に、masterブランチの最新の内容を反映させないと、他の人の追加したデータが消えてしまうかも…!

それを対処します

 

※未コミットのファイルがない状態で

git checkout master

git pull origin master

これでローカルのmasterブランチが最新版になる

 

git checkout akisamo

これでさっきまで作業してた自分のブランチの先頭にHEADが移動する

 

git rebase master 

これが難しい。

 

今いるakisamoブランチってのは、例えば数日前のとあるmasterコミットから分岐しているわけだ。

これを「数日前じゃなくて今!最新のmasterコミットから分岐して作業してたらどうなっていたか?」という観点で自動的に変更していってくれる。

 

mergeとやってることは結果的に同じだけど、合成中のごちゃごちゃした状況を作業用のブランチ上で行えるのは、個人的にもログ管理的にもスッキリしてていい。

 

ここでもし衝突が起こったら、

git status

などでどこが衝突しているか確認し、解消されたら

git add 衝突してたファイル名

git rebase continue

とかして変更を完了させる。

 

無事rebaseが終わった時点で、手元のakisamoブランチは、masterブランチの最新版の内容を反映させた状態になっている。コイツが問題なく動けばすぐさまmasterブランチにコミットできるわけだ。しよう。

git push (--force) origin akisamo

akisamoブランチをリモートのakisamoブランチに(強制的に)アップロードする

あとはプルリクエストを遅ればok。怒涛のレビューを待とう

 まとめ 

ローカルでブランチを作って作業、ローカルでコミットしてから、rebaseして衝突を修正することで、リモートのマスターの最新版の内容を反映させる。あとはリモートにpush、プルリクをおくってリモートのマスターに取り込んでもらう

 

…こんなの実際に何回かやらないとわからんだろうが、2ヶ月やってみて自分の中ではこういう形で納得した。各自でこういう感じで納得したら、まとめてみると良いですよ。

 

困ったときにつかったコマンド

git status

とりあえず使う。変更されたファイル、衝突しているファイルなどがわかる

git branch -a

ブランチ情報を知る。-a とつけるとリモートのブランチも見えるぞ

git rebase --abort

リベースを取り消す。「やべぇコンフリでごちゃになった」時使う

git log --graph

コミット履歴を見る。 graphといれると路線図ががんばって可視化される。エディタちゃん頑張ってるぞ

git reset --hard /--soft HEAD^

多用するべきではないが私はよく使ってしまう神コマンド。

「ヘッダを引数のものに強制移動する」というもの。

コミットをやり直したいときは 

git reset --soft HEAD^

でHEADが1つ戻る(コミットしたことでHEADが1回移動したから)

--softは「ファイルを上書きしない」。--hardにすると前回のコミット内容で完全上書きされ、変更ぶんのファイルも消えてしまう。

3日前のあのコミットに戻りたい時は

git reset --hard あのコミットのID

でファイルの中身ごと復元する。

御託は良いからmasterの最新版を取得したいときは

git origin --hard origin/master 

あと、操作履歴を見るようにHEADの移動履歴を一覧する

git reflog

なんてのもある。これで「変な操作しはじめた14つ前のHEADに戻る!」なんて荒業もある。

git reset --hard HEAD{14}

 

このへんは多用するべきではない(履歴ごと消すから)けど、わりとこうやってなんとかなるから、恐れずにgitをいじってみましょう。よろしくね。CUI使おうね。gitなんとかとかポチポチ打つの楽しいからね

イタリア旅行記:第八日

ずっと更新してなかった…

丸一日のラスト。今日はヴァチカン市国に行く。

朝だというのに入国の長蛇が目の前に。どこの世界でも行列からは逃れられない(絶望)

で中に行くと何があるのかというと、美術館と協会があるのですよ。

もう欧州ってのは美術館と協会しかないのだろうか…まあ気にせず行くことにする

これまでの中で一番きれいで大きな美術館がヴァチカン美術館。

何回も思ったが、この頃の彫刻の布フェチ具合はスゴイ。現代でも乳袋などといわれるような過剰な体のラインや布の流れは執念的で、かつ現代にも通じてるなと思う。

絵についてはもう全部キリストの二次創作でいいんじゃねぇの。

絵師によってけっこうかわるかわる

聖堂かっこよかった。なんとここで数日前トスカーナであった旅行客の夫婦の人とばったり再開しておもしろかった

デスノートの扉にこういう意匠でてきたよね

屋根の上に像がたくさん並んでる。戦隊モノっぽい

よるこれおいしかった。スープマスター

というわけでありがとうございました

Arudino7日ブートキャンプ[2日め]

1日目は教本通りにLEDを着けて喜んだわけだが、今日はさっそく課題に使うようにものを組んで見る。

 

授業課題で「栞に組み込めるセンサー」というのを考え、それを実装することにした。

本と言っても挟み込めば上からの圧力がかかるから、それを測れば何ページくらいまで読んだかおおまかに分かるんじゃないか…という緩い考えである。まあセンサーと表示系統の練習になるからちょうどいいし。

 

そんなわけで秋月で500円で圧電センサーを買った。ちょっと理系気分(理系だろうが)球根も勿論売っていたのが印象的だった

実装にあたっては

http://www.hiramine.com/physicalcomputing/arduino/lcd.html
ほぼココを参考にした。サイトの配線図が教本とかぶらなくて焦ったんだが、どうやらピン番号がめちゃくちゃだったらしい。やってることは同じ。

半固定抵抗というのがよくわからなくて焦ったが、部品ケースに分解されて入っていたらしい。ところでこいつはボードにうまくはまらなかったのだがどうすればいいんだろう…

 

とりあえず、基本的な事柄、たとえば

- アナログのインプットが電源側に用意されている

- アナログインプットは電圧や抵抗値を取得できる

- LCDは配線がめんどい

- 半抵抗は濃度のためにあるので無くても良い

とかはわかった。

 

とりあえず表示と圧力センサはわかったので、明日はモックにセンサを取り付けて光センサも着けれたら良いな?

 

イタリア旅行記:第七日

コロッセオ内部。地下は引剥されてる。

中で行われていた催し物はかなり残酷だったようで…・

ゴミ箱もコロッセオ型。こういう小ネタがいいなぁと

遺跡。広いだけという説もある

 

この鳥まったくカメラに動じなかったので給料が出ているのではないかと思われる

駅から北に行ったところの協会。天井がすごく高い...

だんだんサイズがインフレしているように思えるこの頃…

夜にスペイン広場の近くのレストラン(死ぬ気で見つけた)で食べたもの。

この野菜スープ美味しかったです

ここのビールが世界一美味しかったのだけど、それはまた別の話で

イタリア旅行:第六日

出かけるよ―

フィレンツェ祭り

 

座りやすい

田舎しかない

 

次の目的地はローマ。

南に行くほど治安が悪くなるという法則に従えば、首都が一番危ないのだが…

しかし早速地下鉄に乗る。

椅子が硬い...

そういえば改札で1回エラー起こしたら駅員がいきなり切符ひったくろうとしてきてとても焦った。駅員というか其のへんでくだ巻いてるゴロツキにしか見えなかったが

スペイン広場。

水場。水場あるとみんな普通に汲んでるけど大丈夫な水なの?

まあイタリアにはコンビニとか少ないから貴重な水成分だけど

 

トレビの泉(工事中)

簡易版トレビの泉がコチラ。小さくなって難易度が上がっている。ちゃんと入れたけどね

その辺にある境界。天井に穴が開いていて(仕様)、雨漏りとかどうするんだろうと思った

本場のカルボナーラ。生クリームは使わないっぽいな

おじさんたち

コロッセオ。夕方だが、ジプシーが近くでペイントイラストを作りまくっていた。

体系的にキレイなイラストを作る技法があるらしく、10分程度の作業で1000円ほど。悪くないな。セルフィー売ってる人よりもステージが上なように思える。

夜はより綺麗。すぐ近くのカフェバーみたいなところで夕御飯食べたけど

バイキングもまぁ悪かぁねえな

 

ローマはこれまでの2都市よりも観光都市というか修羅っぽかったしやっぱり都市だな。

イタリア旅行記:第五日

すごい不精してた。もう2ヶ月前なのかよ…とにかく忘れる前に書くことにした

 

早くも折り返し。この日は恐怖のフル自由日ということでピサでも行く流れだったのが、ツアーがあることを発見したのでノリで申しこんだりしていた。

 

集合場所で言われるままシールを貼られバスに載せられる。

必殺ぼっちオーラを出したので1人…だと思ったのだが横にグラサンのオッサンが座ったので泣きながら車窓を見る位しかなかった。高速は偉大だ

斜塔はかなり郊外にあるようで、降ろされた場所は田舎風味の住宅街。

そこをわらわらと歩く。途中にスクールゾーン的な標識があったのだが取るのを忘れてしまった。

これが斜塔。

これは馬。理由は分からないが群れがいた

近くで見るとだいぶ傾きとサイズが分かる。地面はガチガチに固めてあったけど傾斜の度合いはかなりのもの。

 

 

 

移動。

いわゆる「山の上の城壁町」で、強固な壁に周りを覆われているまち。

 

 

 

ところでココでもジェラートを売っていたのだがかなり有名な店だったらしい。

店長のオッサンが名物らしく(味ではない)外で呼びこみに写真撮影に一生懸命だった。ジェラート作ってくれ。

味で言えば、レモンの人権がかなりあるのでありがたい。

城壁の上からみるとこんな光景。

こう波打った厚紙のように遠くまでウネウネと緑地の山が続くのが日本と圧倒的に違うところ。平面じゃなくても平気で畑があるのが異次元臭い

イタリア人格好いいシリーズ。ゴミ袋をこんな流浪の旅人みたいに持つだけでも様になるからずるい

昼飯としてワイナリーで食べたもの…といっても半ばワインの実演販売のようなもので味はスナックレベルでした(悲)。でもワインの味わいかたはしれてよかったね

 

 

その後移動して、カンポ広場でおなじみの町シエナへ。

この辺はどうでしょうで大泉さんが説明してたとこだね。

この日は競馬一日前らしく土が積まれていた。雨なのに大丈夫なのだろうか…

地域(地区)の旗が格好いい。祭りでは各地区ごとに対抗してるんだとか。

時計塔

 

シエナ自体は協会も古くてでも祭りの前日だから活気があった。

お店としてはこの辺は手芸エプロンとかが多くて、ブランドは少なかったけど、それでもちょっと気になるちいさな小物とかはあったかな。旗はすこし欲しかった

 

 

その後はバスで帰還。アンケートを取らされたりした

 

戻って、協会的な広場の近くで夕飯を食べる

たいてい2人席が基本だから、席が開くのに時間がかかった。

なんかSamuraiだかMidoriだかいう名前のカクテル。

 

欧州はどこへ行っても協会があって、その周りに広場があってカフェがある。

人が町中で座れる、集まれる拠点が多くて、町が人間生活の一部にまで入ってる(単なる道具や環境ではなく一歩踏み込んでる)のが良いなと思う。ゆっくり出来る。

 

向かいの席に座ってた家族の娘さんがすごい可愛かった

イタリア旅行記:第三~四日

1日でヴェネツィアに完全に骨抜きにされ「移動したくない!ココに住む!!」と言い張っても計画が変わるわけはなく、慌ただしく荷物をまとめて駅へ行く。

本日はフィレンツェまで特急で向かう。

割と快適な車内。2等なんていうから超満員みたいなのを想像していたけど、グリーン車に対する2等だもんね。

なおスーツケースはデッキに積んであって、盗られないかヒヤヒヤしていた。海外だからかなり疑心暗鬼になっている。日本じゃ放置して爆睡してるくせにー

カナリ田舎な車窓から。都会の間はかなり小規模で、岐阜~京都的な世界を想起する

 車内販売の類はなし。売店は有るらしいけど。あとトイレの洗面水が雀の涙かよってレベルで流れなくて焦った。

 

そして…

フィレンツェに到着。

◆2015/08/13 11:30 フィレンツェ

ヴェネツィアとはガラッと代わり、車が盛大に走っている都市感あふれる光景だ。

場所によっては石畳でその辺がヨーロッパっぽい。

勿論建物は殆ど石造りで、歩いているだけでも何時の時代なんだか一寸迷う。

 

ココからは永遠とフィレンツェの名所を巡っているので簡単なメモを張りながら写真を貼りまくっていく。

 

メディチ家礼拝堂

メディチ家っていうのは金持ちの家系で、この町の芸術家達のスポンサーとなっていた人だという。お陰で有名クリエイターが大量に集まり、有名作品を生み出したのだ…ということだ。そんな一族の眠る礼拝堂。

「天井が高い!!」というのが最初の感想。そして、この天井はこの先どんどん高さのインフレを起こしていくことになる。

 

◆ドゥオーモ

水曜どうでしょう」で見たこと有る…!

ヨーロッパ二十ヶ国完全制覇、第二夜で登場したのがこのドゥオーモだった。

大泉さんたちはこのドームの上に登ったり下で写真を撮っていたりしたね

手前は修復中。修理用の幕も観光地としてのプライドを感じる

ドゥオーモの展望台と、近くの鐘楼の展望台が会ったので双方登ることにした。

(観光地に来るといつも高いとこに登るな...)

しかし、古い建物なので基本階段。研究室生活の若体に鞭打ち登らなくては…

途中にはこんな休憩地点が。網の下は10メートルくらいの穴というハートフルな設計が心に刺さる。僕は2回位ジャンプしたら子供に譲った。存分に跳ねるがいいさ…!本当の畏れと出会う前にな…!

狭い道。

そのまま「ダークソウル」当たりに出てきそうな通路。

そしてこれを抜けていくと…!

たっけぇ!

さすが観光地。すべての建物が中世から停止されているかのよう。

1つのブロックは長方形の縁の部分に建物が連なって、真ん中の中庭が共有されているようだった。奥の方は山に囲まれていて、なんだか京都みたいだった。ココでもやはり高い建物は時計塔か鐘楼。近代的なものは一切なかったのが印象。

 

ここで一旦ホテルに戻り、(Wifiでネットができるので家族全員が黙る)夜になって御飯を食べに出かける。目当てのところがあっのだけど閉まっており、裏路地だし怖い絶対ゴロツキに見つかる身ぐるみ剥がされて乱暴されてしまうと貞操とネタの間を彷徨っているところで見つけた食堂に入り込んだ

家庭料理という感じ。イタリアの料理は…味が…薄いんだな...

本日のビール。イタリアではビールとポテトとスープを毎回頼む人になってる

これは普通のラガーという感じでまぁまぁ。

イタリアの路地かくあるべし。黄色く染まるのがいいな

 

 

2015/08/14

フィレンツェ二日目は伊達政宗像からスタート!

 

博物館

こんな彫刻が廊下に大量に並んでいた。これぞ中世…

この乳のシワ表現をフェチと呼ばずしてなんと呼ぶんだろう…もう皆コレそういうところを描きたくてやってるんじゃないかと思えてくる

 

薄い布フェチ。

このおっさんすき

「ヴィーナス誕生」とか有名な作品も多くあり、「教科書とかで見たやつだ…」って作品が山のように出てくるのは変な気分がする。宗教画であるけど、要はキリスト教の二次作品と考えると、昔のPixivを見ているようで、作者の趣味や作成背景がうっすらわかってたのしかった。

 

突然のおむすび

普通の路地が絵になるってのはすごいな

今日のお昼。サンドイッチ的なもの。

余談だがこの店の男子トイレ、地面に埋め込まれている便器の上に島のように足を載せる部分があり、ほぼ和式みたいな感じでびっくりした。あれは二度と使いたくない...

 

近くの橋。

とにかく装飾しないと気がすまないのか

マネキンが無駄にスタイリッシュだとおもた。どの店もそんな感じ

こんな店をひやかしながらあるいた

実際のところ豆本の店や雑貨に幾つか目星をつけていたのだけど、悉く8月の休暇で閉まっていた。観光地とかどうでもいいノリで堂々休むんだな…

 

◆15:00 アカデミア美術館

あれが…

ダビデ像を見る。

やだ、たくましすぎる…

予想の5倍位大きくて骨抜かれそうだ

剛毛過ぎやしやせんかね…(何がとは言わない)

臀部がすごいなと思う

夜のヴェッキオ橋

多分どうでしょうで大泉さん達が写真とってたとこ

本日の夜御飯。何も考えずにビールを注文したら1パインドで来たンだが…

この店のおじさんがずっと

観光客は多かったからイタリア感はしなかったが、レストランやお店などでは店員がすごいオープンだなという印象を感じる。馴れ馴れしいとかではなくて、必要以上にへりくだったりしないところとか…何も言わないと最大サイズでビールもってくるところとか…(白目)

 

とにかくフィレンツェは街中どの建物でも彫刻がボンボン立っていて、東京とはやっぱ違うよなぁって思う。

 

そういえば帰るときに酔っぱらいの若者たちに囲まれて一緒に写真をとった。

酔っぱらいはドコモ一緒だよなと思った

 

そうやって1日は更けていった。確かジェラートを帰りに食べて美味しかったのを覚えている。

 

石畳は歩きにくいが道は道として歩ける。