gitコマンドの自分用まとめ
基本
git remote show [remotename] | 引数なしでpull、pushした場合に何を取ってくるかわかる。 |
git pull [remote] [remotebranch] | リモートのブランチをpullする |
git push [remote] [localbranch] | 新しくブランチをpushする場合 |
git push -u [remote] [localbranch] | 新しくブランチをpushする場合(pullもできるようにする。上記のではpushのみしかできない) |
git push [remote] [localbranch]:[remotebranch] | リモートのブランチの名前を変えたい場合 |
git push [remote] :[remotebranch] | リモートにあるブランチを削除 |
git status -uno | アントラックファイルを無視してステータスを表示する |
git status -sb | ステータスの表示を簡略化し、ブランチ名を表示する |
マージするときなど
git merge [branch] | 現在のブランチと[branch]をマージする |
git rebase -i HEAD~N | N回前のコミットから編集し直す |
git cherry-pick [commit] | [commit]を今のブランチのHEADに取り込む |
[commit]としては例えば、ブランチ名指定でブランチの先端、[ブランチ名]^で[ブランチ名]の一つ前のコミット等が指定できる。
git diff -c | mergeした際の変更を見る |
git checkout --conflict=merge | conflictした時点に戻る |
branchコマンドのまとめ
git branch -rd [remotename/remotebranch] | ローカルのremoteのブランチを消去? |
git branch -d [localbranch] | ローカルブランチの消去 |
git branch | ローカルブランチ表示 |
git branch -a | 情報のあるすべてのブランチを表示 |
git branch -r | リモートブランチの表示 |
git branch -m [oldbranch] [newbranch] | rename |
git branch --set-upstream [localbranch] [remotename/remotebranch] | localbranchにremotebranchを追跡させる(pullやpushができる) |
checkoutのまとめ
git checkout -b [newlocalbranch] | 新しいローカルブランチを作成し、そこにcheckoutする |
git checkout -b [newlocalbranch] [remote/branch] | [remote/branch]から新しいローカルブランチを作し成、そこにcheckoutする |
git checkout -t [remote/branch] | [remote/branch]から新しいローカルブランチをリモートのブランチ名で作成する |
git checkout [commit] [/path/to/file] | [file]を[commit]のバージョンに戻します |
resetのまとめ
git reset --soft HEAD^ | 一つ前のコミットを取り消し(ローカルのコミットのみ) |
git reset | ステージした変更を取り消し。インデックスをHEADに戻す。 |
git reset HEAD | と同様 |
git reset --hard HEAD | インデックスもワーキングツリーもHEADに戻す。 |
reset をまとめると softはHEADの移動
何もつけないと HEADとインデックスの移動
hardをつけるとHEADとインデックスとワーキングツリーの移動
diffのまとめ
git diff | ワーキングツリーとインデックスの差を表示 |
git diff --cached | HEADとインデックスの差を表示 |
git diff HEAD | ワーキングツリーとHEADの差を表示 |
git diff HEAD^ HEAD | HEADと一つ前のコミットの差を表示、引数にはコミット、ブランチやタグを指定できる |
git diff -c | mergeした際の変更を見る |
git diff `git show-branch --merge-base master HEAD` HEAD | 分岐元との比較 |
showのまとめ
git show [commit] [/path/to/file] | [file]の[commit]ヴァージョンを表示します |
stashのまとめ
git stash | 一時的に変更を保存して、前のコミットに戻る |
git stash save [name] | 一時的な保存に[name]という名前をつけて前のコミットに戻る |
git stash list | stashさせたlistを表示させる |
git stash apply | stashを復活させる |
git stash pop | stashを復活させ、削除する |
git stash clear | すべてのstashを削除する. |
git stash drop [name] | [name]のstashを削除する |
logのまとめ
git log --graph | アスキーアートのブランチやマージの歴史を表示 |
git log -p | logと同時にdiffも表示 |
git log -p [branch]..[topicbranch] | [branch]から[topicbranch]までのログ表示 |
git log --oneline [branch]..[topicbranch] | wc -l | [topicbranch]を作成してから何度コミットが行われたかわかる |
git log --graph --decorate --oneline --all | gitk --allのようにコミットの歴史などが見れる。 |
blameのまとめ
git blame [file] | ファイルの各行の編集者とそのコミットのハッシュ値を表示する |
git blame -s [file] | 上記の簡易表記ver |
git blame -L 3,7 [file] | 3−7行目までを表示 |
git blame -L 3,+5 [file] | 3行目から+5行目まで表示 |
git blame -C[num] [file] | [num]字以上の重複を検出しどこのファイルから移動してきたかを表示する |
archiveのまとめ
git archive --format=tar --prefix=[dirname] [commit] | スナップショットをtarファイルで作成する。展開時、prefixで指定した[dirname(/を最後につけること)]に展開される |
git archive --format=tar --prefix=[dirname] --remote=[remotename] [commit] | リモートのスナップショットを作成 |
cleanのまとめ
git clean -n | gitに登録していないファイルorディレクトリの削除リストを表示 |
git clean -d | ディレクトリも削除対称に入れる |
git clean -x | .gitignoreで指定されたもの削除対象に入れる |
git clean -X | .gitignoreで指定されたもののみ削除対象にする |
git clean -f | 実際に削除する |
grepのまとめ
git grep [pattern] | [pattern]にマッチする文字列を探す |
git grep --chaced [pattern] | stageされたのものから[pattern]にマッチする文字列を探す |
git grep --no-index [pattern] | リポジトリに登録されてないものから[pattern]にマッチする文字列を探す |
git grep -e [regexp] | 正規表現[regexp]でマッチする文字列を探す |
git grep -i [pattern] | 大文字小文字を無視して[pattern]でマッチする文字列を探す |
その他
git config --global alias.co "checkout" | これでgit checkout -> git coと出来る。 |
git rm --cached [filename] | ファイルの追跡をやめる |
git config --global color.ui true | gitの出力に色付けする |
git config --global rerere.enable true | マージ方法を記録する |