アットウィキロゴ

Git

  • 分散バージョン管理システムGitの使い方入門
http://sourceforge.jp/magazine/09/02/02/0655246

Ubuntu 10.10 でインストールしてみた。以下コマンド

sudo apt-get install git-core

git config
  git config --global user.name "Shinichi Tsuchiya"
    ユーザ名
  git config --global user.email "[email protected]"
    ユーザのメールアドレス
  git config --global color.ui auto
    uiの色??

ワークツリー  ・・・・ git init を実行したディレクトリ以下
HEAD     ・・・・ 直前の最後に commit したバージョン
インデックス ・・・・ 次回の commit でリポジトリへ反映させる

ディレクトリをgitの管理へ追加
  git init
バックアップリポジトリを作る
  git init --bare
共用リポジトリを作る
  umask 002
  mkdir -p [任意のディレクトリ]  (例: /pub/repositories/gitusers.git )
  cd [任意のディレクトリ]
  chgrp gitusers .   (gitusersというグループに開発者全員のユーザが存在すると仮定)
  git --bare init --shared
  その後、サーバローカルにて、
  cd [ローカルリポジトリのディレクトリ]
  git push /pub/repositories/gitusers.git master
  として、共用リポジトリにpushする
共用リポジトリからclone
  クライアントにて
  cd [ベースディレクトリ]
  git clone [サーバ名]:[共用リポジトリ] [ローカルリポジトリ名]
    (例: git clone servername:/pub/repositories/gitusers.git gitusers.git)

ブランチ(枝)をコピーする
  git push [リポジトリpath] [ブランチ名]
    例:git push /pub/repository/gitusers.git master
  git push origin master
    git clone して作ったコピーの場合、元になるリポジトリはoriginという名前で指定できる。
    これは、git clone元へ変更点をgit pushする。
  git push
    省略すると、cloneで作った場合に限り、clone元へ変更点をpushする。git push origin master と同じ。

リポジトリのコピーを作る
  git clone [リポジトリpath] [ディレクトリ名]
    カレントディレクトリに[ディレクトリ名]の子ディレクトリを作り、その中に[リポジトリpath]の内容をコピーする

インデックスに記録する。(=次のcommitで記録するようにリクエスト)
  git add [filename1] [filename2] ...
    [filename1]、[filename2] ... のみ対象とする
  git add .
    カレントディレクトリ以下の全てのファイルを対象とする 
  git add -u
    ワークツリー内でgitで管理している全てのファイルを対象とする
  git add -p
    変更点を順に表示して、対話形式でインデックスに記録する部分を決める
    ファイルを部分的に commit したい場合に有用
  git add -A
    git add -u に加え、gitで管理されてないファイルの内、.gitignore に記載の無いもの全てを対象にする

コミット
  git commit
    エディタが起動するので、コメントを書いて保存でコミット完了
    1行目をコミットの要約、2行目を空行、3行目以降をコミットの内容 とするのが通例
  git commit -m "こめんと"
    エディタを起動せず、-mオプションの内容をコメントにしてコミット完了
  git commit -a -m "こめんと"
    = git add -u
      git commit -m "コメント"
  git commit -v
    commit の内容を表示
  git commit -m "割込み" [ファイル名]
    インデックスの状態を保留して、[ファイル名]のファイルだけを commit する
  git commit --amend -a -m "コミットのやり直し"
    1つ前のcommitをやり直す
    (実際は枝分かれする)

環境変数?
  git var GIT_COMMITTER_IDENT
    コミット者の名前
  git var GIT_AUTHOR_IDENT
    編集者の名前

変更差分表示
  git diff
    ワークツリー内で、現在のファイルと、最後に git add したファイルの差分を取る
    ※.git add すると差分は表示されない
  git diff HEAD
    ワークツリー内で、現在のファイルと、最後に commit したファイルの差分を取る
    ( git add していても、commit していない変更点を全て表示する)
  git diff --cached
    HEAD と、現在のインデックス記録との差分

git status
  状態表示

.gitignore ファイル
  バージョン管理から外すファイルを列記

git log
  変更履歴を表示する
  HEADを起点にし、遡り表示。
git log --pretty=short
  commit の要約(1行目)だけリスト表示する
git log --pretty=short [ファイル名]
  [ファイル名]の変更点の要約だけリスト表示する
git log --grep='abcde'
  コミットメッセージに'abcde'とあるものだけ表示する
  ※.--grep を複数個付けると、「OR条件」になるので注意
git log --all-match --grep='abcde' --grep='ghijk'
  複数のgrep条件をAND条件にする場合
git log --author='著者名'
  著者名を表示条件にする
git log --committer='記録者名'
  記録者名を表示条件にする

git blame [ファイル名]
  [ファイル名]の1行1行が、どの commit で変更されたかを表示する
  表示の左端の8桁の文字が、コミットID

git show
git show HEAD
  最後の commit の内容を表示する

git reset
  インデックスの内容を破棄する
git reset [ファイル名]
  インデックスの内容から、[ファイル名]のファイルだけ除外する
  (それだけHEADの状態に戻す)
git reset HEAD^
  最終commitのポインタを、1つ前の所に戻す。=最終commitを破棄する。
  現在のワークツリーの状態は変更しない。
  ※.実際には捨てられたcommitの状態も保存されており、1つ前のcommitから枝分かれさせる
git reset --hard HEAD^
  最終commitを破棄し、ワークツリーの内容も1つ前のcommitの状態に戻す
git reset --hard HEAD
  ワークツリーの変更を破棄する。最終commitの状態に戻す

git revert [コミットID]
  [コミットID]でcommitした内容を打ち消す

git rebase -i HEAD~3
  最新含む3つ前のcommitの状態まで戻し、それ以降のcommitを対話形式で修正可能にする
  エディタが起動し、指示票が表示されるので、修正したいcommitの行の「pick」を「edit」に変えてエディタ保存すると、
  そのcommitの直後の状態になる。ここで再修正し、git commit --amend -a を実行すると、修正したいcommitは修正される。
  (枝分かれする)
  その後、最新までの2つのcommitは修正せずに適用させる為に、git rebase --continue を実行すると、3つ前のcommit情報のみ
  修正した状態になる。
git rebase --continue
  前述の git rebase -i で戻して修正したcommit以外のcommit処理を再度行う

git checkout [ファイル名]
  [ファイル名]の状態を、インデックスの状態(最終add)に戻す
  [ファイル名]を省略すると、ワークツリー全体が対象
git checkout HEAD [ファイル名]
  [ファイル名]の状態を、最終commitの状態に戻す
  [ファイル名]を省略すると、ワークツリー全体が対象

タグ:

+ タグ編集
  • タグ:
最終更新:2012年04月26日 17:43
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。