Git

ステータス表示

$ 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 clean -f
$ git clean -df

※ -d でディレクトリを削除

リモートにブランチ指定してプッシュ

$ 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

サブモジュールの URL 変更

.gitmodules を編集後、下記を実行

$ git submodule sync