🙆‍♀️

個人的によく使うGitコマンド

に公開
3

スタッシュ(作業の一時退避)

保存

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登録しています。

https://tracpath.com/docs/git-log/

https://qiita.com/kawasaki_dev/items/41afaafe477b877b5b73

コミットの詳細確認

git show コミットハッシュ

コミットの打ち消し

git revert コミットハッシュ

リセット

特定のコミットまで戻したい

git reset --hard コミットハッシュ

※hardは全てリセットするので注意!

https://qiita.com/ChaaaBooo/items/459d5417ff4cf815abce

addを取り消したい(アンステージ)

git reset HEAD

特定のコミットからブランチを派生させたい

git checkout コミットハッシュ -b ブランチ名

https://qiita.com/wnoguchi/items/dabe6e05388faf75f00c

変更差分を取り消し

git checkout .

特定のファイルだけを取り消ししたい場合は"."をファイル名にする
ステージさせたら無理なので、アンステージしてからコマンドを実行

コミットメッセージ検索

git log --grep=検索文字列

リベース

git rebase ブランチ名

https://qiita.com/C_HERO/items/06669621a1eb12d8799e

フェッチ

git fetch
git fetch --prune

リモートに存在しなくなったブランチを確認してからフェッチする。リモートに存在しななくて、ローカルに存在する追跡ブランチは削除される。

https://tracpath.com/docs/git-fetch/

リモートブランチをローカルに作成

git checkout -b 新規作成するローカルブランチ名 origin/リモートブランチ名

ブランチを派生

git checkout -b ブランチ名

https://qiita.com/yunano/items/f3133ea64efed762df2f

ブル

git pull origin リモートブランチ名

https://qiita.com/hiroaki-u/items/4e97f338ad18fca142b8

ブランチ削除

リモートブランチ削除

git push --delete origin ブランチ名

追跡ブランチを削除

git branch --remote -d origin/ブランチ名

ローカルブランチ削除

git branch -D ブランチ名

タグ

ローカルタグを全て削除

git tag | % { git tag -d $_ }

https://qiita.com/k-penguin-sato/items/c62b47dd79f144c68dad#ローカルのタグの削除

リモートタグを取得

git ls-remote --tags

タグを作成

git tag タグ名

ローカルタグを削除

git tag -d タグ名

リモートタグを削除

git push origin --delete タグ名

https://qiita.com/kma_ane/items/565287da421a0ece5917

Discussion

Akihiro MATOBAAkihiro MATOBA

素敵な記事をありがとうございます! ひとつ教えてください、「%」というコマンドが「初めまして」だったので、手元の環境で実行してみたら以下のようになったのですが、これは何者なのでしょうか。

bash
bash-3.2$ git tag
tag-a
tag-b
bash-3.2$ git tag | % { echo $_ }
bash: %: command not found
bash-3.2$ git tag | xargs -I$_ echo $_
tag-a
tag-b
zsh
% git tag                         
tag-a
tag-b
% git tag | % { echo $_ }         
zsh: parse error near `}'
% git tag | xargs -I$_ echo $_
tag-a
tag-b
dexcterdexcter

ご質問ありがとうございます。
%はPowerShellのForEach-Objectのエイリアスになります。
git tag | ForEach-Object { git tag -d $_ }git tag | % { git tag -d $_ }は同じ意味になります。
ローカルタグを全て削除に注意書きのメッセージを追記しました。

Akihiro MATOBAAkihiro MATOBA

PowerShellのコマンドなんですね! 教えていただきありがとうございます!
修正までして頂きありがとうございました!