waste of time

主にPHP

[落書きメモ] よく使う(?)gitコマンド

(たまに|よく)使うけど忘れそうなコマンドの自分用メモ。

git config

gitconfig置き場は3種類あって、system, global, localの順に呼ばれて上書きされるっぽい

現在の設定を確認
git config (--system|--global|--local) -l

設定例
git config (--system|--global|--local) user.name "user_name"
git config (--system|--global|--local) user.email "user_email"

リポジトリ

リポジトリの確認
git remote -v

リモートの設定
git remote add origin [repo URL]

コミット

直前コミットの上書き
git commit --amend

直前コミットの上書き(コミットメッセージそのまま)
git commit --amend --no-edit

diff

差分ファイルの一覧
git diff [target] --name-only

GUIツール
git difftool -y [diff_target]

ブランチ

ローカルブランチを作る(-tオプションで追跡ブランチを指定できる)
git checkout -b [new_branch] -t origin/[track_branch]

branchコマンドでも可
git branch [branch_name] origin/[track_branch]

(developブランチを基点とした)フィーチャーブランチの作成
git checkout -b feature/[new_feature_branch] develop

既存のローカルブランチに追跡ブランチを設定する(設定したいローカルブランチにいる状態で)
git branch -u origin/[track_branch]

プッシュ時に設定することもできる
git push -u origin [track_branch]

ローカルブランチ、ローカルブランチに紐付いてる追跡ブランチ、リモート追跡ブランチを確認
git branch -a -vv

削除済みリモートブランチの追跡ブランチの削除(-nオプションつけると、削除は行わず確認だけできる)
git remote prune origin
git (fetch|pull) --pruneでもOK

ローカルブランチの削除
git branch -d [branch_name]

リモートブランチの削除
git push --delete origin [branch_name]

変更の一時退避

変更内容を一時退避(コメントを省略する場合はgit stashだけでOK)
git stash save "comment"

stashの一覧
git stash list

stashの復元(popするとstashリストから消える)
git stash pop 'stash'

変更取消

workingの変更取り消し
git checkout -- [file_name]
git checkout -- .

stageに上げた変更をworkingに戻す
git reset HEAD [file_name]
git reset HEAD .

元に戻す系のコマンドはあまり使ったこと無いので、git reset (--hard) HEAD^とかgit reflogとかの使い方はまだ詳しくは知らない。

svn export的なやつ

デフォルトではtarでアーカイブされるようなので、windowsではzip指定すると良い
git archive --format=zip branch_name -o export.zip

~/.gitconfig

コマンドじゃないけど。至って普通な感じだと思う。

[user]
    name = hoge
    email = fuga@piyo
[core]
    editor = subl --wait
    quotepath = off
[color]
    ui = auto
[push]
    default = simple
[diff]
    tool = WinMerge
    guitool = WinMerge
[difftool "WinMerge"]
    path = 'C:/Program Files/WinMerge/WinMergeU.exe'
    cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -ub -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = P4Merge
[mergetool "P4Merge"]
    path = "C:/Program Files/Perforce/p4merge.exe"
    cmd = \"C:/Program Files/Perforce/p4merge.exe\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    keepTemporaries = false
[credential]
    helper = wincred
[alias]
    s = status
    b = branch
    l = log --graph --oneline --decorate
    ch = checkout
    cm = commit

今年の3月くらいから業務でgitを使うようになり、ようやく小慣れてきたかなーといった感じです。 はじめた当初はSourceTreeを使っていましたが、最近はGitBash on cmderでコマンドガチャガチャ叩いて格好つけたりしています。