プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

今更ですがgit入門

ふとiPhoneのサンプルコードとか入れておくと便利かなと思い、使ってみたくなったので環境を整えてみました。

インストール

gitのサイトからv1.6.2.3のソースを取得してインストール。

$ tar zxvf git-1.6.2.3.tar.gz
$ mv git-1.6.2.3 /usr/local/src
$ cd /usr/local/src/git-1.6.2.3
$ ./configure --prefix=/usr/local/git
$ make
$ sudo make install

githubに登録

アカウントは少し前に作っていたのでssh関連から。


1. public key を登録
アカウントページからpublic keyを登録します。public keyは以前作っていたものをそのまま利用しています。さくらサーバでsvn+sshを利用する方法(Linux/Mac)


2. ~/.ssh/config を作成

Host github.com
  User git
  Port 22
  Hostname github.com
  IdentityFile ~/.ssh/your_id_dsa
  TCPKeepAlive yes
  IdentitiesOnly yes


3. レポジトリ作成

dashboardのcreate new oneからレポジトリを作成。

ProjectName: iphone-samples
Description: iPhone programming samples.


作成すると説明がでてきたのでその通りに実行しました。

$ git config --global user.name "your name"
$ git config --global user.email your@mail.address
$ mkdir ~/Desktop/iphone-samples
$ cd ~/Desktop/iphone-samples/
$ git init
$ touch README
$ git add README 
$ git commit -m 'commit test.'
$ git remote add origin git@github.com:ntaku/iphone-samples.git
$ git push origin master

いろいろメッセージが出て無事プッシュ完了。
githubで参照するとファイルが追加されていました。

gitに慣れる

とりあえずgithubは問題なく使えそうな感じなので、gitに慣れるために色々試してみました。

ローカルレポジトリ

まずは適当にレポジトリを作成してファイルをコミット。

$ mkdir local_git
$ cd local_git
$ git init                                 // レポジトリ初期化
$ touch readme
$ git add .                              // ファイルを全て追加
$ git status                             // 変更ファイルを確認
$ git commit -m 'first commit'    // コミット
$ git log                                 // 履歴を確認


別のブランチを作成してmasterブランチから切り替え。
(SVNみたいにtrunkという概念はなくて全部ブランチ)

$ git branch 20090417                    // ブランチを追加
$ git checkout 20090417                  // ブランチを切り替え
$ git branch                             // ブランチが切り替わっていることを確認
$ echo 'test' > readme                   // ブランチを修正
$ git commit -a -m 'commit from branch'  // コミット
$ git checkout master                    // masterに切り替え
$ git merge 20090417                     // ブランチの修正をマージ


タグを付けてみる。

$ git tag -a tag_20090417 -m 'add tag'   // タグ追加 
$ git tag -l                             // タグ一覧


タグをアーカイブして取得してみる。

$ git archive --format=zip master tag_20090417 > ~/tag.zip
リモートレポジトリ

ローカル環境に複数レポジトリを作成してリモートレポジトリも試せました。


リモートブランチはベアレポジトリという形で作成。

$ mkdir remote_git 
$ cd remote_git
$ git --bare init


ローカルレポジトリの修正内容をリモートレポジトリに反映させる。

$ mkdir local_git 
$ cd local_git
$ git init
$ git remote add origin ~/Desktop/remote_git   // リモートレポジトリを指定
$ git remote show origin                       // 上記レポジトリの情報を表示
$ touch readme
$ git add .
$ git commit -m 'first commit'                 // ローカルレポジトリを更新
$ git push origin master                       // 対象ブランチを指定してプッシュ


別のローカルリポジトリを作って更新内容を取得、リモートレポジトリの更新を確認する。

$ mkdir local_git2
$ cd local_git2
$ git init
$ git pull ~/Desktop/remote_git
$ git log


最低限使えるようになったのでこんな感じで終了です。

その他メモ

$ git config --list                     // configの内容を確認
$ git push [remote repo] [my repo]      // ブランチの初回プッシュ
$ git push [remote repo]                // 2回目以降のプッシュ
$ git config --global color.diff auto   // カラー設定
$ git config --global color.status auto
$ git config --global color.branch auto