gitサブディレクトリ下のファイル管理

日頃週報とか議事録とか頻繁に書くことがあって、
自分のノートPCと研究室マシンと自宅マシンで同期を取りたい。
別にオンラインストレージ使えよって話なんですが、
Dropboxの容量を潰したくないのと、gitに慣れる意味合いを兼ねて
調べてました。

一連の流れ

$ mkdir aaa 
$ cd aaa
$ touch README
$ echo "initial commit" > README
$ git init
$ git add .
$ git commit -m "initial commit"
$ git push origin master 

前提

gitosisを使っているので、gitosis-admin/gitosis.confの中身にちゃんと以下を追記。

[group hoge]
writable = hogehoge
member = hogehoge@fedora

躓き1

まず、remoteの設定をやっていなくて、

$ git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

がひたすらターミナルを埋め尽くした。

解決

ちゃんとリモートの設定をしましょう。

$ git remote add origin git@鯖名:リポジトリ名

もし、この段階でミスっても、.git以下のconfigに記述されるので
そっちを変更すればなんとかなりました。

躓き2

主に1よりも長い間こっちで躓いていたのは内緒。
普通に、

$ git add .
$ git commit -m "hogehoge" 
$ git push origin master

として、他の環境でclone or pullします。
しかし、サブディレクトリ以下のファイルが反映されていなかった。

解決

git submoduleとかいろいろ調べた結果、git add時に指定すれば大丈夫でした。
つまり、

$ git add .

ではなく、

$ git add *

とする。もちろん、*を特定のディレクトリやファイル指定でもOK。
あとは同じ手順。

こんな落とし穴に落ちてしまうとは.......反省。