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 マージ方法を記録する