いろいろあるので忘れてしまわないようにメモしておく。
分散管理とブランチの機能はよく出来てると思う。
■リポジトリの作成
$ 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
マージが完了する