🙆♀️
個人的によく使うGitコマンド
スタッシュ(作業の一時退避)
保存
git stash
ワークツリーを一時退避させます。
スタッシュ一覧の確認
git stash list
一番最新のスタッシュを適用
git stash apply
特定のスタッシュを適用
git stash apply "stash@{0}"
スタッシュに名前を付ける
git stash save "スタッシュ名"
git stashだと適当に名前が付けられて何のスタッシュか分からなくなるので、名前をつけておきます。
スタッシュの中身を確認する
git stash show "stash@{0}" -p
特定のスタッシュを削除
git stash drop "stash@{0}"
差分確認
ステージングされる前の差分確認
git diff
':(exclude)ファイル名.拡張子'を付け加えると特定のファイルを除外することができます。
自分はステージングさせる前に毎回差分を確認しています。
ブランチ単位で差分を確認する
git diff ブランチA ブランチB
ブランチBで追加されたものが緑で表示
ブランチAで削除されたものが赤で表示
ブランチAとブランチBの順番を入れ替えると意味が逆になります。
コミットツリーの表示
git log --graph --all --pretty=format:'%Cred%h%Creset %Cgreen(%cd) -%C(yellow)%d%Creset %s %C(bold blue)<%an>%Creset' --abbrev-commit --date=format-local:'%Y/%m/%d %H:%M:%S'
クライアントツールのように綺麗には表示されませんが、私はこれを使っています。
毎回入力するのはめんどくさいので、alias登録しています。
コミットの詳細確認
git show コミットハッシュ
コミットの打ち消し
git revert コミットハッシュ
リセット
特定のコミットまで戻したい
git reset --hard コミットハッシュ
※hardは全てリセットするので注意!
addを取り消したい(アンステージ)
git reset HEAD
特定のコミットからブランチを派生させたい
git checkout コミットハッシュ -b ブランチ名
変更差分を取り消し
git checkout .
特定のファイルだけを取り消ししたい場合は"."をファイル名にする
ステージさせたら無理なので、アンステージしてからコマンドを実行
コミットメッセージ検索
git log --grep=検索文字列
リベース
git rebase ブランチ名
フェッチ
git fetch
git fetch --prune
リモートに存在しなくなったブランチを確認してからフェッチする。リモートに存在しななくて、ローカルに存在する追跡ブランチは削除される。
リモートブランチをローカルに作成
git checkout -b 新規作成するローカルブランチ名 origin/リモートブランチ名
ブランチを派生
git checkout -b ブランチ名
ブル
git pull origin リモートブランチ名
ブランチ削除
リモートブランチ削除
git push --delete origin ブランチ名
追跡ブランチを削除
git branch --remote -d origin/ブランチ名
ローカルブランチ削除
git branch -D ブランチ名
タグ
ローカルタグを全て削除
git tag | % { git tag -d $_ }
リモートタグを取得
git ls-remote --tags
タグを作成
git tag タグ名
ローカルタグを削除
git tag -d タグ名
リモートタグを削除
git push origin --delete タグ名
Discussion
素敵な記事をありがとうございます! ひとつ教えてください、「%」というコマンドが「初めまして」だったので、手元の環境で実行してみたら以下のようになったのですが、これは何者なのでしょうか。
ご質問ありがとうございます。
%はPowerShellのForEach-Objectのエイリアスになります。git tag | ForEach-Object { git tag -d $_ }とgit tag | % { git tag -d $_ }は同じ意味になります。ローカルタグを全て削除に注意書きのメッセージを追記しました。
PowerShellのコマンドなんですね! 教えていただきありがとうございます!
修正までして頂きありがとうございました!