Gitの主要なコマンドたち


いろいろあるので忘れてしまわないようにメモしておく。
分散管理とブランチの機能はよく出来てると思う。

■リポジトリの作成
$ git init
(共有専用リポジトリ)
$ git init --bare --shared=true

■リポジトリの取得
$ git clone

■ファイル状態の確認
$ git status

■ステージングエリアへファイルを追加する
$ git add [file]

■ステージングエリアのものをコミットする
$ git commit -m "コメント"

■ステージングエリアの省略
$ git commit -a -m 'コメント'

■リポジトリからファイルの削除
$ git rm [file]

■リポジトリ内でのファイルの移動
$ git mv [file-from] [file-to]

■リモート先のリポジトリを反映する
$ git push

■ローカルをリモート先のリポジトリで更新する(fetchとmerge)
$ git pull

■ファイルの無視
.gitignore
このファイルに無視するフォルダやファイルを記述する

■直近のコミットの変更
$ git commit --amend

■ステージしたファイルの取り消し
$ git reset HEAD [file]

■ファイルへの変更の取り消し(不用意に用いない)
git checkout -- [file]

■削除したファイルを元に戻す (svn update的な)
$ git checkout [file]

■リモートの表示
$ git remote -v

■リモートリポジトリの追加
$ git remote add [remote-name] Git_URI

■リモートの調査
$ git remote show [remote-name]

■リモートの削除・リネーム
$ git remote rm [remote-name]
$ git remote rename [now-name] [new-name]

■タグの一覧表示
$ git tag

■パターンを指定してタグを検索
$ git tag -l 'v1.4.2.*'

■タグの作成
注釈付きのタグ
$ git tag -a v1.4 -m 'my version 1.4'

■タグのデータとそれに関連づけられたコミットを見る
$ git show v1.4

■署名付きのタグ
GPG 秘密鍵を持っていれば、タグに署名をすることができる
$ git tag -s v1.5 -m 'my signed 1.5 tag'

■軽量版のタグ
-a -sのコマンドをつけない
$ git tag v1.4-lw

■タグの検証
署名付きのタグを検証するには git tag -v [tag-name]
$ git tag -v v1.4.2.1

■後からのタグ付け
特定のコミットにタグをつけるには、そのコミットのチェックサム (あるいはその一部) をコマンドの最後に指定
$ git tag -a v1.2 9fceb02
$ git tag
v1.0
v1.2
v1.3

■タグの共有
デフォルトでは、git push コマンドはタグ情報をリモートに送らない
$ git push origin [tagname]
多くのタグを一度にプッシュしたい場合
$ git push origin --tags

■ブランチの作成
$ git branch [branch-name]

■ブランチの切り替え
$ git checkout [branch-name]

$ git checkout -b bugfix
Switched to a new branch "bugfix"

これは、次のコマンドのショートカット
$ git branch bugfix
$ git checkout bugfix

■現在のブランチにブランチを統合する
masterブランチにbugfixブランチを統合するなら
$ git checkout master
$ git merge bugfix

■不要になったブランチを削除する
$ git branch -d bugfix

■現在のブランチの一覧を取得
$ git branch
bugfix
* master
testing

* は現在チェックアウトされているブランチを意味している

■現在のブランチの一覧の最新のコミット状況を表示
$ git branch -v
bugfix 93bbbbc fix bug issue
* master 7afff05 Merge branch 'bugfix'
testing 78fd323 test for mine

■現在作業中のブランチにマージ済みのブランチを調べる
$ git branch --merged
bugfix
* master

先頭に * がついていないものは、通常は git branch -d で削除してしまって問題ないブランチ

■まだマージされていない作業を持っているすべてのブランチ
$ git branch --no-merged
testing

このブランチを git branch -d で削除しようとしても失敗する。-D で強制的に消すことができる。

■リモートリポジトリにブランチを追加する
$ git push [remote-name] [branch-name]

■リモートリポジトリのブランチを確認する
$ git branch -r
origin/bugfix
origin/master

■リモートリポジトリの変更を取り込む
$ git fetch [remote-name]
現在のブランチがmasterならリモートのorigin/masterブランチでmergeする
$ git merge origin/master

■リモートリポジトリのブランチをローカルのブランチとしてコピーする
$ git checkout -b bugfix origin/bugfix
現在のブランチがbugfixとなる

■追跡ブランチの作成
$ git checkout --track origin/bugfix
上のコマンドからブランチ名を指定せず簡略できる

■マージが完了したリモートのブランチを削除する
$ git push [remote-name] :[branch-name]

■リベース
原則として公開リポジトリにプッシュしたコミットをリベースしてはいけない
リベースはコミットの履歴をすっきりさせるために用いる

$ git checkout testing
$ git rebase master

コンフリクトが発生したらマージを行う。rebase自体を取り消す場合は git rebase –abort
$ git add file.txt
コミットはしなくていい
$ git rebase --continue
これでfast-forwardマージが出来るようになる
$ git checkout master
$ git merge testing

マージが完了する