まったりいんふぉまてぃくすめもらんだむ

主にプログラミング関係のメモに使うかもしれないしそうでないかもしれない

Gitを導入する

研究室サーバに入れるようになったので常にサーバ上で作業してれば問題ないっちゃないんだけど、オフラインでもいろいろできるようにGitでサーバとローカルの環境をつなごうという試み。
いつものごとくやったことを時系列順に淡々と書いていく。

  1. マシンにGitをインストール。一瞬。
  2. 手始めに何かレポジトリ引っ張ってこようということで、サーバに置いてある今まで書いた少しばかりのプログラムをworksと名付けた新しいディレクトリにまとめる。
  3. サーバの~/works上でgit init
  4. .gitignoreをちょっとだけ書く
  5. addしてcommit
  6. 作ったレポジトリをマシンに落とす。ローカルの~/でgit clone username@servername:works
  7. ファイルがコピーされたよ!やったー!

余談:
clone元の指定を他のサイトに書いてあるままに:/works.gitとか書いたらエラー出て詰んだかと思った。最終的に↑ので通った。
後にこれは誤った認識であったことが分かるんだが、それは後述。

と、ここで研究室サーバではGitのレポジトリ内だとプロンプトにブランチ名が表示される便利機能があったのに気づいたので.zshrcに書いてあった内容を輸入してみたけど、表示が気に入らない感じになったのでいじってたら別エントリに分けられそうなぐらいのめり込んでしまった。ということでそっちの続きは別エントリで。

そしてここからは作業の共有のテスト。
まずはサーバの作業をローカルに反映させる。サーバ側で適当にファイルに変更を加えcommit→ローカルでgit pull。うまくいった。

次は今度はローカルの作業をサーバに反映。同じくローカル側で適当な変更を加えcommit→git pushするとエラーが出てうまくいかない。non-bareなレポジトリには書き込みできませんよ的なことを言われる。

なんぞこれと思って調べてみてここで重要なミスに気づく……作業を共有しようと思ったらGitサーバーを立てる必要があるのね。そんでそのサーバーはworks.gitみたいな名前をつけるからclone時に引っかかった他サイトの例はあんな風になってたと。

ということでPro Gitで勉強しなおして、改めてGitサーバーworks.gitを

git clone --bare --shared works ~/mygit/works.git

で立てて、そこにサーバー&ローカルからpull&pushをリトライ。今度は両方できた。ふぅ。

つーかローカルからcommitするときになってまだユーザ名とか設定してないことに気づいたので、ここでgit config --global。

とりあえずこれでオフライン作業環境はひととおり完成かな?