トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

Git


RSS 無料英単語

目次


記事一覧

キーワード

Git


  • 以下の本からメモ



設定

 確認

基本

$git config --global --list
user.email=pppiroto@gmail.com
user.name=piroto

ユーザーインターフェースの色

$git config --global color.ui "auto"

 設定

$git config --global user.name "Hiroto Yagi"
$git config --global user.email "pppiroto@gmail.com"

 編集

$git config --global --edit

 ヘルプ

$git help
$git help コマンド

GUI

プロジェクトの作成

 プロジェクトコードが保存される3つの場所

  1. 作業ツリー : 直接ファイルを編集
  2. インデックス(ステージングエリア) : 作業ツリーとリポジトリとの間のバッファ
  3. リポジトリ

 リポジトリの作成

  • Gitのリポジトリは、作業ツリーと同じ場所の.gitディレクトリの中
$mkdir mysite
$cd mysite
$git init
  • 作業ファイルがなく、管理ファイルのみのリポジトリの場合
$git init --bare hoge

 変更を加える

  • リポジトリに追加
$git add hoge.txt
  • サブディレクトリを含めたすべてを登録
$git add .

  • コミット
$git commit -m "Comment for this commit"
  • gitが変更を把握しているすべてをコミット
$git commit -a

add

  • gitがコミットのための追加・変更をステージする
  • 対話形式に対象を選ぶ
$git add -i
    :
*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
  • 4.まだ追跡していないファイルをステージする
  • 5.コミットする変更箇所を指定する

mv

  • ファイル名の変更やファイルの移動
git mv 元ファイル名 後ファイル名

mvは、新しいファイルに対する、add と古いファイルに対する rm を自動で行う

ファイルを無視する

.gitignore
  • .gitignoreファイルに設定を書き足す
  • ワイルドカードが使用可能
  • 通常のファイルで構成管理対象のため共有されてしまう
.git/info/exclude
  • .git/info/excludeに記述する方法もある。
  • 他のユーザとは共有されない。

 変更の確認

現在の状況を確認

$git status

差分の確認

作業ツリーの変更を表示
  • パラメータなし
$git diff
ステージングとリポジトリとの差分表示
$git diff --cached
ステージング含め作業ツリーのすべてをリポジトリと比較
$git diff HEAD

HEADは現在作業しているブランチの直前のコミットを表すキーワード

 コミットログの確認

$git log

 作業を開始する

  • 作業ツリーがgitにどう見えているか
$git status

ブランチ

Git の真髄は、あらゆるものがブランチのように扱われることにある

 ブランチを作る

  • masterブランチを元にRB_1.0ブランチを作成する
  • masterブランチは、Subversionにおけるtrunkにあたる
$git branch RB_1.0 master

  • new ブランチをつくる
$git branch new
  • "*"が打たれているのがcheckout(現在作業ツリーに反映されている)されているブランチ
$git branch
* master
  new
  • 新しいブランチをcheckout
$git checkout new
Switched to branch 'new'
  • 確認
$git branch
  master
* new

 ブランチを切り替える

$git checkout RB_1.0

Gitでは、ブランチにかかるコストが安い。Gitのブランチはそのブランチで成された最新のコミットだけを記録している


 ブランチ間での変更マージ

  • ブランチ間で変更をマージする方法はいくつかある
    • 直接マージ: 履歴をマージして一緒にしようとする
    • 圧縮コミット: 変更を圧縮(squash)して別なブランチの先頭にコミット
    • チェリーピック: コミットを1つとってきて、現在のブランチに適用

直接マージ

  • マージ先としたいブランチに切り替え
$git checkout master
$git merge new

リリースのハンドリング

 タグを打つ

  • タグの名前(1.0)、タグを打ちたいポイント(RB_1.0)
$git tag 1.0 RB_1.0

 タグ一覧の参照

$git tag

 rebase:ブランチから変更を取り出し別ブランチの先頭で再生

  • masterブランチからブランチしたRB_1.0 の変更をmasterブランチに反映させる
  • まず、masterブランチへ戻る
  • rebase で反映させる
$git checkout master
$git rebase RB_1.0

 ブランチの削除

  • タグを打ってあるため、ブランチを削除しても問題ない
$git branch -d RB_1.0
  • リリースに対してパッチする場合、タグからブランチすればよい
$git branch RB_1.0.1 1.0
$git checkout RB_1.0.1

 アーカイブする

  • --formatでアーカイブ形式、--prefixでディレクトリを指定
$git archive --format=zip --prefix=phraseit-0.9/ master >master0.9.zip

リモートリポジトリ

  • gitはリモートのリポジトリも扱える
  • 自分の作業を共有、コピーの取得など可能

 リモートリポジトリのクローン

  • リモートリポジトリで作業を始めるためにはクローンの作成が必要
  • 作業を始めるリモートリポジトリの完全なコピーを作成する
$git clone ssh://root@rev.typea.info/var/www/git/phraseit


 Webから確認



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto