Git

Gitが全然分からなかったので勉強した。眠い。

More than 1 year has passed since last update.

眠い。


Gitとは

分散型バージョン管理システム


大きな構成から知ろう!

Gitは、大きく以下の3つからなる。


  • Gitディレクトリ



    • プロジェクトのためのメタデータと、オブジェクトのデータベースがあるところ

    • 作業ディレクトリにクローンしたり、ステージング環境からコミットを受付けて、永久不変に保持するスナップショットとして保持する



  • 作業ディレクトリ


    • プロジェクトの一つのバージョンの単一チェックアウト

    • 新規作成するか、クローンする事で作成される



  • ステージングエリア


    • 次のコミットに何が含まれるかに関しての情報を蓄えた場所

    • 作業ディレクトリからスナップショットを受付け、Gitディレクトリにコミットする



つまり

「 - 」 → (新規作成) → 「作業ディレクトリ」

「Gitディレクトリ」 → (クローン) → 「作業ディレクトリ」

「作業ディレクトリ」 → (add) → 「ステージングエリア」

「ステージングエリア」 → (コミット) → 「Gitディレクトリ」

というサイクルになる。




ここまでOK( ・ω・ )??



コマンドで確認していく


Step1. ユーザ設定

まず初めに、ユーザ/メールを設定する必要がある。

git config --global user.name "ユーザ名"

git config --global user.email "メールアドレス"
git config -l


Step2. 作業ディレクトリ作成

上記したように、2パターンあります。


新規作成

新規プロジェクトを作って、そのプロジェクトをgit管理する。

#homeディレクトリ配下にアプリの基となるディレクトリ作成

cd /home
mkdir myapp
cd myapp

#git initで、カレントディレクトリをGitディレクトリに変換
git init


クローン

既存のGitディレクトリをクローンを作る。クローンって厨二っぽくて格好良い。

今回は例として、ここに書いてるようにGritをクローンする。

#homeディレクトリ配下にアプリの基となるディレクトリ作成

cd /home
mkdir myapp
cd myapp

#git cloneで、カレントディレクトリにGritをクローンする
git clone git://github.com/schacon/grit.git


Step3. 作業ディレクトリ→ステージングエリア→Gitディレクトリへの一連の上げ方

#index.htmlを作成/編集

cd /home/myapp
vim index.html

#git addで、ステージングエリアに上げる
git add index.html

#git commitで、Gitディレクトリに上げる
git commit

この段階で役立つコマンドがいくつかあるので紹介!必見!

git add . : 現在ディレクトリ配下の変更を全てadd

git status : 現在の状態を教えてくれる。(addすればいいのか、commitすればいいのか、みたいな)

git diff : 変更の差分を教えてくれる。(addする前に使う。addした後は--cachedオプションを付ける)

git log : コミット履歴が見れる。色々オプションもあるので


Step4. 直前のコミットを変更したい!

って事ありますよね。

「コミットしたけど変数名間違えた。けど、コミットするほどの内容じゃないし、、、どうしよう。」って事。

#add -> commit(間違) -> ファイル編集 -> add -> 以下のコマンド

git commit --amend


Step5. コミットを取り消したい!!!

って事もありますよね。

git reset --hard HEAD : 作業ディレクトリまで上書き(hard)

git reset --soft HEAD : 作業ディレクトリまでは上書かない(soft)

git reset --hard HEAD~2 : 2個前に戻る(HEAD~2)

git reset --hard a1b2c3d4e5 : 指定された場所に戻る(git logした時のアレ)


Step6. ブランチを切りたい!マージしたい!

ブランチっていうのは「分岐」。マージっていうのは「合流」。

詳しくは調べて下さい。(只今am03:00)

チェックアウトっていうのも、調べて下さい。(眠い)(元気になったら投稿編集します)

git branch         #現在のブランチ(default:master)

git branch hoge #hogeを作る
git checkout hoge #hogeに移動
git marge hoge #hogeをmasterにmarge #masterで実行


Step7. logファイルはバージョン管理から無視したい!!!

カレントディレクトリに、ファイル .gitignore を生成する。

# filename: .gitignore

*.log


Step8. プルリク!!!

Gitと言えば「プルリク」!

よく聞きますよね、プルリクエスト。

コマンドだとこうなります。

git push origin master

プルリクエストを受取るのは、以下のコマンドです。

git pull origin master

プルリクなのにプッシュ.....

何でプッシュなんだろう.....

と思ったら、こういう事ですね。

Aさん「編集したよ、Bさん!プルしておいて!pullをrequest!!!」

Bさん「はーい」

なのでプルリク。

納得。


最後に

自己満で申し訳ない。

眠い。




以上。おやすみ。