1: 2011-07-28 (木) 06:33:39 yuji ソース
Line 1: Line 1:
 +*gitとは, [#q7c3fbd0]
 +subversionに代わる新しいバージョン管理システムということで,gitだ。。~
 +Androidもgitで管理されている。というよりも,Linuxカーネルの管理を目的としてLinus Torvaldsが開発したものだそうだ :)
 +たしかにLinuxカーネルの開発では,開発している人たちがLinux Kernel Mailing Listにパッチを投稿して,それをソースに反映させるという開発スタイル。もともと別のバージョン管理システムを使ってたはずなんだけど,なんかの問題でgitを開発したのかな・・・
 +ということで,Linuxカーネルではスゴイ量のソースコード,変更点の抽出やリポジトリ操作があるんだろうから,性能は折り紙付きかな。
 +
 +subversionと何が違うのかというと,大きく違うところは分散レポジトリを使えるということらしい。~
 +分散レポジトリってなにかがよくわからないんだが,ファイルを管理しているデータベースの格納先を中央の1箇所ではなく,いろいろな所に持てるということだと思う。
 +
 +gitでの作業フローは,
 +
 +-中央リポジトリからコピーする
 +-コピーしたリポジトリを編集し,コンテンツの修正,追加,削除を行う
 +-ローカルへコミットする
 +-中央リポジトリへ変更内容を反映させる
 +
 +になる。
 +
 +実際のリポジトリへのアクセスには,
 +-ローカル
 +-WebDAV
 +-Git独自プロトコル
 +-rsync
 +-ssh
 +でアクセスできるようだ。
 +
 +Linusは,トランスメタ時代にCVSを使えと言われて,その時にCVSを憎むほど嫌いになったらしい。Subversionに対しては,史上最大の無意味なプロジェクトであると思っているとの事。SubversionがCVSの改良というスタンスで開発された訳が,その理由になっている :-D
 +
 +**インストール [#e0bea0ae]
 + # yum install git
 +でインストールした。
 +
 +**設定 [#i8a8679b]
 +git configコマンドはで,gitの環境設定ファイルを編集する。
 +gitの環境設定ファイルは,環境に応じ3つの場所に置かれる。
 +|設定ファイルの場所|意味|git configのオプション|h
 +|/etc/gitconfig|システム上の全てのユーザとリポジトリ|--system|
 +|~/.gitconfig|各ユーザ用|--global|
 +|.git/config|現在管理中の,Gitリポジトリ|付けない|
 +普通は,--globalを使って設定すればいい気がする。
 + $ git config --global user.name "Yuji Ueno"            # ユーザ名
 + $ git config --global user.email yuji@yeno.homeip.net  # メールアドレス
 + $ git config --global color.ui auto                    # 出力を見やすくする
 + $ git config --list
 + color.ui=auto
 + user.name=Yuji Ueno
 + user.email=yuji@yeno.homeip.net
 +
 +**使い方 [#h058b63f]
 +***作業領域をgitで管理対象にする [#ifb5a1e6]
 +hogehoheディレクトリ以下をgitで管理する。
 + $ cd hohehoge
 + $ git init
 +こうすると,hogehogeディレクトリに「.git」というディレクトリが作られ,このディレクトリがリポジトリになる。((個人用))
 +
 +この時だと,まだhogehogeにあるファイルはバージョン管理されていない状態。~
 +git statusコマンドでそれが確認できる。トラックしていないファイルって表示される。~
 + $ git add .
 +でトラックするようにする。addコマンドはいろいろな意味があって,新しいファイルのトラック開始・ファイル衝突時のマージなどのマーク付けなんかで使用するみたいだ。
 +
 +その後,まだリポジトリに変更を確定してないので,コミットする。
 + $ git commit -m "最初のコミット"
 +これで,コミットされる。
 +
 +***普段の流れ [#hddb2a26]
 +gitを使った流れは,下記のような感じになる。
 ++ファイルを編集,新規作成
 ++git statusで変更状況を確認
 ++git diffで変更箇所を確認
 ++編集作業が終わったらgit add ファイル名,またはgit add -uで変更ファイルを記録する指定をする。
 ++git commitでリポジトリに変更を登録(git commit -a "説明・・・")
 +
 + $ git status
 + # On branch master
 + nothing to commit (working directory clean)
 +変更したものがない場合は,statusコマンドを使うと,このような出力が返ってくる。
 +
 +***gitに登録させたくないファイル [#t4285e5b]
 +gitに登録させたくない場合のファイル指定は,無視させるファイルを.gitignoreファイルに指定することが出来る。
 +.gitignoreの内容を,
 + *~
 +のようにすると,file.txt~とかいうファイルを無視するようになる。
 +
 +***共有レポジトリの作成と運用 [#u8c9db25]
 +複数の人で共有するリポジトリがあると便利。
 + $ mkdir /var/www/git/hogehoge.git
 + $ cd /var/www/git/hogehoge.git
 + $ git init --bare
 +これで,/var/www/git/hogehoge.gitという共有用リポジトリが出来た。
 +
 +前に作った個人用レポジトリ設定を共有リポジトリに反映させる。
 + $ git push /var/www/git/hogehoge.git master
 +これで,共有リポジトリに登録できたんで,複数人で共同作業が行えるようになった。
 +
 +コピーを持ってくるには,
 + $ git clone /var/www/git/hogehoge.git hogehoge.new
 +とかすればOK。~
 +svn だとcheckoutに似ているんだけど,gitでは,リポジトリサーバーが保持しているデータを全てコピーする。つまり履歴も含んだ全てが,git cloneとすることで手元に持ってこれる。これは,リポジトリサーバーが万が一壊れちゃっても,どこかに残っているcloneしたデータを戻してやれば復元も可能になる。これまでの履歴ももちろん復元される。~
 +このへんが,Subversionとは違うところ。
 +
 +その後,編集後,例えば,hogehoge.newでfile1.txtを作成後,共有レポジトリに反映させる時には,
 + $ git commit -a "add file1.txt"
 + $ git push origin master
 +これで,共有レポジトリにfile1.txtが追加される。
 +
 +hogehogeディレクトリで,今までの更新を反映させるには,
 + $ cd hogehoge
 + $ git pull /var/www/git/hogehoge.git
 +とすると,hogehogeが,hogehoge.newと結果的には同じになる。
 +
 +これで共同でファイルを編集・更新が出来るようになります。
 +
 +共有リポジトリがある場合の流れ,
 ++git cloneで共有リポジトリからファイルをコピーする
 ++ファイルを編集,新規作成
 ++git commitでリポジトリに変更を登録(git commit -a "説明・・・")
 ++git pushで共有リポジトリを更新
 + $git push origin master
 +
 +***githubを使う [#vcd63cc6]
 +共有リポジトリは,別のコンピュータやネットワークの外のコンピュータでも同様に使用できる。~
 +cloneやpushやpullといったコマンドは,ネットワークを経由して行われる。通信プロトコルは,いくつかを選択できるようになっている。~
 +githubというのは,共有リポジトリを作成して,それをWeb上で共有できるサービスの事をいうようだ。


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 563, today: 2, yesterday: 0