自分のアプリケーションを材料にして、gitの昨日を理解していこうと思う。
前提としてはgitの環境は整っている。ので環境導入は他のところを参照してください。
また、裏側がどうなってるかはとりあえず置いておいて、「どのように使うか」を中心にまとめていく。
適当にディレクトリを作って、
mkdir karaoke_ruby
そこにとりあえずコードのファイルを移す。
何気にコマンドでローカル→サーバ間のコピーをどうするかわからなくてググルはめになった
username,servernameは適宜入れ替えてください。 GUIでできるんならもちろんそうしても良い
scp karaoke.rb username@hostserver:~/karaoke_ruby
このディレクトリをリポジトリにする
cd karaoke_ruby git init
すると、以下の様なメッセージが出る。
Initialized empty Git repository in /home/username/karaoke_ruby/.git/
これで、とりあえずこのディレクトリは「リポジトリ」となった。
注意することとして、どんなディレクトリをリポジトリにしても、最初は中身が空の状態として認識される。なので、更新してきたいファイルを「登録」してあげなければならない。
git add karaoke.rb
これでkaraoke.rbがリポジトリに登録された。しかし、実はまだ暫定的な更新となっている。
statusコマンドで、現在の状態を確認できる。
git status
メッセージ
# On branch master # # Initial commit # #Changes to be commited: # # (use "git rm --cached <file>..." to unstage) # # new file: karaoke.rb
ざっくり言うと、コレで更新したいならcommitをして、やめたいならrmとしてくれという感じ。
commitとはいわゆる「更新」にあたる。rmはまぁシェル触ってたらわかると思うけど消去。
更新したいのでcommitする。
git commit
すると謎の入力を求められる。 gitはcommitするたびに、コメントと作成者を求めてくるので教えてあげよう。
コマンドラインから両要素を指定することもできる。
git commit -m "comment" \ --author= "author name <address>"
すでにどっかで登録してあったら適用される 自分の場合は適用されてた。
ちなみにこの時に使うエディタはコマンドで指定できるが、使用シェルによって違うので割愛。
ちゃんと更新されたかどうか確認。
git status メッセージ >|| nothing to commit (working directory clean)
これでとりあえず完了。
更新は中のファイルを少し変更してgit commit すればよい。
これでこのリポジトリにはkaraoke.rbのバージョンが二つは入ってることになる。実際に見てみる。
git log
ログは下から上に更新順で書かれている。 更新が二つ確認できていたら問題なし。
commitの横にある暗号みたいな文字列はコミットIDと呼ばれる、コミットの内部の識別子。
git show <commitID>
で最新のコミットの詳細が見られる。割愛。
二つのリビジョン(バージョンみたいなもの)の違いを見るには、
git diff <commitID1> \ <commitID2> //とすればよい 結果は割愛。
リポジトリ内のファイルの削除
git rm <filename>
とすればよい。ファイル名の変更については、addとrmを組み合わせれば可能だが、もっと早い方法があって、
git mv <beforefilename> <afterfilename>
とすればよい どのような変更でも、やった後にcommitするのを忘れないように。
最後に、リポジトリをローカルにコピーして操作する。karaokeはローカルでの名前。
git clone karaoke_ruby karaoke
実際にはサーバーから引っ張ってきたので、
git clone username@servername:karaoke_ruby
となってる。
ローカルでファイルを変更。 その後add→commitまでは同じなので省略。
さらにoriginリモートというものを作らなければならない。これはまぁすべての更新をそこに送る大本の幹のようなもの(だと思う)
適当にhomeディレクトリにtmp/Depot とか作って、cloneする ただし、少し特殊。
cd ~/tmp/Depot/ git clone --bare ~/karaoke_ruby karaoke_ruby.git
普通のリポジトリではなくベアリポジトリというものになっている。ベアリポジトリはワーキングツリーが無いという以外は他の通常のリポジトリとは変わらない 平たく言うと、ベアリポジトリでは作業はできない。 あくまで変更を集積する幹としての存在にするという感じ(多分)。
ちなみにベアリポジトリには通例で.gitをつけることになっている。
あとはこのベアリポジトリをoriginリモートに設定する。
このclone元のリポジトリに行って、
git remote add origin ~/tmp/Depot/karaoke_ruby.git >|| ちゃんとできてるかは.git/configを確認すれば分かる。もし、場所を間違えても直接.git/configを書き換えればよい あとは何かを更新するときには、add, commitして、 >|| git push origin
とすればよい。
更新を確認するときは、
git pull
とすればいいんだけど、リモート元はどこだ、ブランチはどれだ、と聞いてくる可能性がある そのときは
git pull origin master
とすれば通った これで完了。