ステータス表示
$ git status
ログ
$ git log $ git log-all $ git reflog
コミット対象にする
$ git add sample $ git add -u
ローカルコミット
$ git commit
※ -a オプションで変更対象をすべてコミット
リモートから更新対象を取得
$ git fetch
マージする
$ git merge
fetch -> merge
$ git pull
差分チェック
$ git diff commit_id
※ --name-only でファイル名だけを出力
コミットチェック
$ git show commit_id
誰がいつ修正したかチェック
$ git blame sample.txt
検索
$ git grep -e 'regexp'
リモートレポジトリにコミット
$ git push
※ -f は強制
- 一番最初のプッシュ時につける
$git push --set-upstream origin master
変更の退避
$ git stash
退避戻し
$ git stash pop
退避削除
$ git stash clear
ブランチを見る
$ git branch
※ -r リモート表示
※ -a ローカル/リモート表示
ブランチ名を変更
$ git branch -m new_branch
ブランチを作る
$ git branch local_branch
ブランチを削除
$ git branch -d local_branch
追跡ブランチ確認
$ git branch -vv
追跡ブランチ設定
$ git branch --set-upstream-to=origin/remote_branch local_branch $ git branch -u origin/remote_branch local_branch
追跡ブランチから削除
$ git branch --unset-upstream
origin/HEAD 削除
$ git remote set-head origin -d
タグ作成
$git tag local_tag
タグをリモートレポジトリにコミット
$ git push --tags
タグを最新に更新
$ git fetch --tags
タグの削除
$ git tag -d local_tag
リモートレポジトリのタグを削除
$ git push origin :remoto_tag
リモートのタグ一覧
$ git ls-remote --tags
ブランチの向き先変更
$ git checkout local_branch
リモートレポジトリの状態に戻す
$ git checkout origin/master sample.txt
コンフリクト時の解消
$ git checkout --theirs sample.txt
※ --ours で自分側を優先
削除
$ git rm sample.txt
変更直前に戻す
$ git reset --hard ORIG_HEAD
1個前のリビジョンに戻す
$ git reset HEAD~
コミット対象を取り消す
$ git reset
コミットを取り消す
$ git revert commit_id
※ -m <1, 2>で親ブランチを選択できる
※ -n でコミットを行わない
リモートにブランチ指定してプッシュ
$ git push origin local_branch:remote_branch
リモートからブランチ削除
$ git push origin :remote_branch
または
$ git push --delete origin remote_branch
リモートのリビジョンを1つ戻す
$ git push -f origin HEAD~:master
リモートの状態を見る
$ git remote show
リモートのブランチと同期をとる
$ git remote prune origin
または
$ git fetch --prune
直前のコミットに上書き
$ git commit --amend
ブランチを付け替える
$git rebase destination_brance source_branch
コミットを編集
$ git rebase -i HEAD~
※reword でメッセージを修正できる
edit でそのコミットに対して修正できる
squash でそのコミットを統合できる(コメント編集あり)
fixup でそのコミットを統合できる(コメント編集なし)
分割ステージング
$ git add -p
※ y この変更をステージングする
n この変更をステージングしない
q 終了する
a これ以降の変更をすべてステージングする
d これ以降の変更をすべてステージングしない
/ 正規表現で変更内容の検索を行う
s この変更をさらに分割する
e この変更の分割をエディタを起動して手動で行う
? ヘルプを表示する
ブランチ1からブランチ2の間をmasterに移動
$ git rebase --onto master local_branch1 local_branch2
リベースの取り消し
$ git rebase --abort
特定のコミットを取り込む
$ git cherry-pick commit_key
レポジトリを作成
$ git init
リモートレポジトリから複製
$ git clone git@localhost:repository $ git clone http://example.com/sample.git
リモートにレポジトリ追加
$ git remote add origin git@localhost:repository
リモートと接続解除
$ git remote rm origin
リモート URL 変更
$ git remote set-url origin git@localhost:repository
レポジトリ最適化
$git gc
サブモジュールに追加
$ git submodule add git@localhost:repository directory
サブモジュールの clone
$ git submodule update --init
サブモジュールブランチ変更
$ git submodule foreach git checkout local_branch
サブモジュールを最新に更新
$ git submodule foreach git pull origin local_branch