2011年11月25日

Gitコマンドまとめ

Gitコマンドまとめ
テストに出そうなコマンドとオプションをまとめてみた。

add


カレントディレクトリ以下のファイルをインデックスに追加

> git add .

任意ファイルをインデックスに追加

> git add PATH

Git管理になっているファイルでインデックスから変更があったファイルを全部インデックスに追加

> git add -v

インデックスに追加する内容を選択する。

> git add -p

commit


インデックス(Stating Area)をローカルリポジトリに反映

> git commit

commitのやり直し。直近のcommitの内容を現在のStage内容で上書きする。

> git commit --amend

変更ログをインラインで書きたい場合

> git commit -m "commit message"

任意ファイルを「ワーキングコピー→ローカルリポジトリ」でコピーする

> git commit PATH

「ワーキングコピー→ローカルリポジトリ」で変更を反映したい場合(内部で自動的にaddしてくれる)

> git commit -a


diff


「ワーキングコピー」と「インデックス」の差分を表示

> git diff

「インデックス」と「ローカルリポジトリ」の差分を表示

> git diff --cached

「ワーキングコピー」と「ローカルリポジトリ」の差分を表示

> git diff HEAD

rm


stage状態のファイル(commitはまだ)を削除する(ファイル自体もなくなる)

> git rm -f 削除ファイル名

ファイル自体は残すがGit管理外にする

> git rm --cached 削除ファイル名

log


指定日以降のログを表示する

> git log --since=2011-01-11

指定日までのログを表示する

> git log --until=2011-01-11

特定のAuthorのログだけ表示する

> git log --author="yamada tarou"

指定文字列にマッチするログだけ表示する

> git log --grep="test"

diffの内容も表示する

> git log -p

統計データを表示する

> git log --stat

※authorとgrepを同時に指定する場合は「--all-match」を付ける事。

reset


Stage状態の(addした)ファイルのStage解除(未add状態にする)

> git reset HEAD Stage解除ファイル

checkout


カレントブランチの内容にファイルを戻す場合

> git checkout -- 元に戻すファイル名

ブランチ作成とブランチへの切り替えを同時に行う

> git checkout -b ブランチ名

tag


タグを作成

> git tag -a タグ名

タグにログをインラインで書く

> git tag -m "メッセージ"

指定バージョンにタグを付ける

> git tag -a タグ名 指定バージョンのチェックサム値

push


masterブランチの内容をマスターリポジトリに反映する

> git push

指定タグをマスターリポジトリに反映する

> git push origin タグ名

ローカルリポジトリにあって、マスターリポジトリに無いタグを全て追加する

> git push origin --tags

ローカルブランチをリモートブランチに追加する

> git push リモート名 ローカルブランチ名:リモートブランチ名

リモートブランチの削除

> git push リモート名 :ブランチ名



pull


「マスターリポジトリ」の内容を「ローカルリポジトリ」にfetch&mergeする

> git pull


「リモートリポジトリの任意ブランチ」を「ローカルリポジトリの任意ブランチ」にfetch&mergeする

> git pull . remotes/リモートリポジトリ/任意ブランチ

branch


ブランチの作成(作成だけでブランチに移動はしない)

> git branch ブランチ名

ブランチの削除

> git branch -d ブランチ名

ブランチの強制削除(-dだと未マージのブランチは消せない)

> git branch -D ブランチ名

各ブランチの直近のコミットを表示

> git branch -v


リモートブランチを表示する

> git branch -r

現在のブランチにマージ済みのブランチ表示(マージ済みなので消して良い)

> git branch --merged

現在のブランチにマージされていないブランチ表示

> git branch --no-merged

merge


ブランチのマージ

> git merge ブランチ名

rebase


作業ブランチを任意ブランチにrebaseする

> git rebase 任意ブランチ

ブランチ1から派生したブランチ1-1だけを任意ブランチにrebaseする

> git rebase --onto 任意ブランチ ブランチ1 ブランチ1-1



posted by purigen at 11:00| Comment(1) | TrackBack(0) | Git | このブログの読者になる | 更新情報をチェックする

2011年11月24日

Subversionユーザーがgitの考え方を勉強した

Subversionを使ってるのにワザワザGitを使おうと思ってる理由は下記の利点を享受する為。

・マスターリポジトリのログを綺麗にしたい!
 commitって意味のある単位でするのがベストだとは思うけど、バックアップの意味合いもあってコミットする時もある。そうするとログが大量になってもう読む気なくなる。
・変更更新を早くしたい!
 サーバーへのコミットって重いじゃないですか。
・気軽にbranchとかtagとか使いたい!
 ローカルリポジトリでbranch,tagが作ったり削除したりできる。
・コミットの制御が柔軟にしたい!
 「あっち直してー、こっち直してー。でも今日提出あるからねー」とかあるわけですよ。Gitだと「インデックス(staging area)」を上手く使えば柔軟に制御できそう。


Gitに関してはWeb上に山ほどArticleがあるので、超ざっくり自分メモ。

Gitの構成要素


・マスターリポジトリ
 みんなで使う大元のリポジトリ。Subversionでのリポジトリと思ってOK
・ローカルレポジトリ
 個人が使うリポジトリ。
・インデックス(staging area)
 ワーキングコピーの状態をインデックスという場所に格納する。ここからローカルリポジトリにコミットする
・ワーキングコピー
 実際にコーディングしたりファイルを追加したりする場所。Subversionのワーキングコピーと一緒

Subversionから「ローカルリポジトリ、インデックス」という要素が増えてますね。

Gitの手順


・マスターリポジトリ作る
Subversionだと「svnadmin.exe create . 」に該当
 

> git init

・「インデックス、ローカルリポジトリ、ワーキングコピー」の作成
Subversionだと「svn checkout file:///****/****」に該当

> git clone file:///***/****


・変更内容をマスターリポジトリに反映するまで
 1.ファイルを追加or更新する
  変更するファイルを作らないとしょうがない
 2.「ワーキングコピー→インデックス」の反映
  Subversionの場合はいきなりコミットでマスターリポジトリに反映ですが、Gitではまずインデックスに反映させます。

カレントディレクトリ以下の全てのファイルの変更&追加をインデックスに反映

> git add .

 3.「インデックス→ローカルリポジトリ」の反映
  次に、ローカルリポジトリに変更を反映させます。

  

> git commit -m "test commit"

4.「ローカルリポジトリ→マスターリポジトリ」の反映
後は最後にローカルリポジトリ→マスターリポジトリをすれば終了

  

> git push
  


めんどーーーーい。Subversionに比べてめんどーーーーーい。
・変更内容をマスターレポジトリから取得する
朗報。コレはコマンド一発。

> git pull

Subversionでいうupdate

Subversionとの用語差分


Gitをお勉強しているとSubversionと同じ用語で意味が違うのがいくつかあって混乱するので主なものをまとめてみた。
・add
Subversion:「ワーキングコピー→マスターリポジトリ」のファイル追加
 Git:「ワーキングコピー→インデックス」の状態登録
・commit
Subversion:「ワーキングコピー→マスターリポジトリ」の変更登録
Git:「インデックス→ローカルリポジトリ」の変更登録
・diff
Subversion:「ワーキングコピーとマスターリポジトリ」の比較
Git:「ワーキングコピーとインデックス」の比較(diff HEADでワーキングコピーとローカルリポジトリ)
・checkout
Subversion:「マスターレポジトリ」から「ワーキングコピー」を作成する。(Gitだとcloneに該当)
 Git:ブランチの作成

とりあえずコレで最低限使えるのかな。ここまでだと、Subversionに比べてややこしいだけな感じだけど、各コマンドの詳細な使い方を勉強するとどんどん便利になっていきます。
posted by purigen at 11:00| Comment(0) | TrackBack(0) | Git | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。