==[[Git チュートリアル]]==
[[Git]] |
*この本からのメモ
==リポジトリの作成==
*[[subversion ]] などたいていのVCSはリポジトリと作業ツリーは別の場所にあるが、Gitでは、どちらも.git ディレクトリに存在する*Gitでリポジトリを作るには、まずプロジェクトコードを格納したい場所を決める[[Git]]でリポジトリを作るには、まずプロジェクトコードを格納したい場所を決める(例として、mysite とする)
*mysite ディレクトリを作成し、その中で git init とする
$ cd mysite
$ git init
Initialized empty [[Git ]] repository in /home/piroto/git_test/mysite/.git/
*これでリポジトリが作成された
*コミットは、リポジトリに格納される1つ1つの履歴
*コミットでは、ユーザー名、メールアドレス、コミットメッセージが格納される
$ git commit -m "add in hello world [[HTML]]"
[master (root-commit) 6b4f2e7] add in hello world HTML
1 files changed, 5 insertions(+), 0 deletions(-)
Date: Mon Dec 6 22:10:38 2010 +0900
add in hello world [[HTML]]
==プロジェクト作業の開始==
<html>
<head>
<title>Hello World in [[Git]]</title>
</head>
<body>
</html>
===git status===
*作業ツリーをGitがどう認識しているか確認作業ツリーを[[Git]]がどう認識しているか確認
*Changed but not updated (変更されているが更新されていない) に分類されているが、コミットするには、変更をステージ(stage)する必要がある
*ステージするとコミットの準備を整えたことになる
no changes added to commit (use "git add" and/or "git commit -a")
===Gitではプロジェクトコードが保持される場所が3つある[[Git]]ではプロジェクトコードが保持される場所が3つある===
#作業ツリー
#インデックス(ステージングエリア)
git branch [作りたいブランチの名前] [分岐元にしたいブランチの名前]
=====例=====
$ git branch RB_1[[R]]B_1.0 master *master は Gitでのデフォルトブランチ名[[Git]]でのデフォルトブランチ名*RB [[R]]B は Release [[R]]elease Branch の略
<blockquote>これで、リリース準備が整ったブランチが切り離せたので、影響をあたえずに変更できる</blockquote>
====HTMLをさらに編集[[HTML]]をさらに編集====
:
<body>
:
====変更をコミット====
* -a パラメータを付けてGitが変更があったと認識している全てをコミットパラメータを付けて[[Git]]が変更があったと認識している全てをコミット
git commit -a
=====コメントの入力を促されるので、入力してエディタを終了させる=====
*リリースバージョンのブランチに切り替えて修正を施してみる
=====ブランチの切り替え=====
$ git checkout RB_1[[R]]B_1.0 Switched to branch 'RB_1[[R]]B_1.0'
====リリースバージョンのHTMLを修正リリースバージョンの[[HTML]]を修正====
* meta タグを追加
<head>
<title>Hello World in [[Git]]</title> <meta name="description" content="hello world in [[Git]]" />
</head>
====コミット====
*タグを打つことで、リポジトリの特定の時点に目印を付けて参照しやすくする。
git [タグ名] [タグを打つポイント]
$ git tag 1.0 RB_1[[R]]B_1.0
====タグの一覧====
*リポジトリにおけるタグの一覧
===リベース===
*以下のためには、git rebase コマンドを利用する
<blockquote>現時点で、ブランチが2つあり、それぞれが関知していないコミットを持っている。RB_1現時点で、ブランチが2つあり、それぞれが関知していないコミットを持っている。[[R]]B_1.0(リリース1.0) に変更がなされたことを、master ブランチ(リリース2.0向けの作業)にも知らせる必要がある。</blockquote>
*ブランチから変更を取り出してきて、別のブランチの先頭で再生するのがリベース(rebase)
=====この状態を=====
Switched to branch 'master'
=====rebase コマンドの実行=====
$ git rebase RB_1[[R]]B_1.0
Current branch master is up to date.
=====ブランチの削除=====
*リポジトリは、上記の下図の状態になったので、リリースブランチを削除する
*先ほど作ったタグが、RB_1先ほど作ったタグが、[[R]]B_1.0 と同じコミットを指しているため、失うものはない
*git branch -d で削除
$ git branch -d RB_1[[R]]B_1.0 Deleted branch RB_1[[R]]B_1.0 (was d0068a8).
=====内容を確認=====
$ cat index.html
<html>
<head>
<title>Hello World in [[Git]]</title> <meta name="description" content="hello world in [[Git]]" />
</head>
<body>
===タグからブランチを作る===
*リリースブランチ(RB_1[[R]]B_1.0)を削除してしまったが、タグを指定してブランチを作成できる*タグ 1.0 から、 RB_1[[R]]B_1.0.1 をブランチ $ git branch RB_1[[R]]B_1.0.1 1.0
===アーカイブ===
*スピード重視の独自プロトコル
*9418ポートを使うのでファイアーウォールの設定が必要
*パスは、リポジトリだと見なすパスをGitサーバー起動時に指定するので、クライアントはリポジトリ名を指定パスは、リポジトリだと見なすパスを[[Git]]サーバー起動時に指定するので、クライアントはリポジトリ名を指定
*多くの git:// は読み取り専用として、書き込みには、ssh:// を使うことが多い
git://[server][リポジトリ]
=====[[HTTP]]/HTTPS[[HTTP]]S=====
*困ったときの最後のプロトコル
*効率的ではないが、厳格なファイアーウォールでも許可されていることが多い
==Subversion とのコマンド対比==
{|class="wikitable"
![[subversion]]
!git
|-
==リモートでの作業==
*http://git-scm.com/book/ja/v1/[[Git]]-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AE%E4%BD%9C%E6%A5%AD
*http://naokirin.hatenablog.com/entry/20111201/1322576109
===git remote add===
*リモートリポジトリの追加
*新しいリモート [[Git ]] リポジトリにアクセスしやすいような名前をつけて追加する
git remote add [shortname] [url]
$ git remote