上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
開発/バージョン管理システム/git
のソース
資料室
開発
/
バージョン管理システム
/
git
のソース
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
開発/バージョン管理システム/git
へ行く。
« Prev
*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コマンドはいろいろな意味があって,新しいファイルのトラック開始・ファイル衝突時のマージなどのマーク付けなんかで使用するみたいだ。 その後,まだリポジトリに変更を確定してないので,コミットする。コミットされるのは,addコマンドを実行したファイルに対してのみになる。 $ git commit -m "最初のコミット" これで,コミットされる。 いちいちaddコマンドするのは面倒なこともある。その時には, $ git commit -a -m "次のコミット" と-aオプション付きでコミットすると,add処理を自動的にやってくれる。 よくやるのは,commitした後を早まったというか変更するファイルがまだ有った時の要な場合は, $ git commit -m '最初のコミット' $ git add 忘れてたファイル $ git commit --amend で,忘れてたファイルを再度commitする時,直近のcommitに上書きのような状態にする。 **普段の流れ [#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~とかいうファイルを無視するようになる。 **gitに登録したファイルを削除 [#q1742fde] 単にrmでファイルを削除した場合は,リポジトリには登録されたままになる。この場合, $ git checkout -- filename とかすると,削除したファイルを復活できます。リポジトリにファイルが残ってるからです。 gitリポジトリからファイルを削除する場合は, $ git rm filename を実行すると,ファイルの削除が登録される。次にコミットすると,ファイルが削除される。 *共有レポジトリの作成と運用 [#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 これで,共有リポジトリに登録できたんで,複数人で共同作業が行えるようになった。 **共有リポジトリからコピーを持ってくる [#ke536912] コピーを持ってくるには, $ 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上で共有できるサービスの事をいうようだ。
« Prev
開発/バージョン管理システム/git のバックアップ一覧
開発/バージョン管理システム/git のバックアップソース(No. All)
1: 2011-07-28 (木) 06:33:39
yuji
現: 2020-12-26 (土) 15:07:53
yuji
Counter: 562, today: 1, yesterday: 1
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ