0.1から始めるプログラミング 開発のほう git つかいかた 1

自分のアプリケーションを材料にして、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

とすれば通った これで完了。