0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

個人的によく使ってるGitコマンド集

Posted at

はじめに

会社ではGitをGUIツールに頼らずに直接コマンドを叩いて操作しています。
ただコマンドを忘れて検索することも多いので、よく使うコマンドを基本的なものを含めて自分用にメモすることにしました。

私が日頃よく使うものを適宜、追加・更新していきます。

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

git checkout

checkoutは機能が多いです。それもあって最近はGit公式側がgit switch, restoreとして機能を準備しています。

ブランチ切り替え

コマンド 機能
git checkout ${branch} ブランチの切り替え
git checkout -b ${branch} ブランチの作成と切り替え

ファイル操作(変更取り消し・取得)

コマンド 機能
git checkout ${path} ファイルの変更の取り消し
git checkout ${branch} -- {file_path} 指定ブランチからファイルを取得

git status

コマンド 機能
git status ステージング状態などを表示
git status --name-only ステージング状態などを名前だけ表示
git status --short ステージング状態などを簡易的に表示

git diff

コマンド 機能
git diff ${path} 指定ファイルの差分を表示
git diff --cached ステージング済みファイルの差分を表示
git diff --name-status 差分が追加/削除かのマークを表示
git diff --diff-filter=A/D/M/a/d/m 差分をフィルタリングして表示
git diff origin/${branch} 指定ブランチとの差分を表示
git diff origin/${branch} -- {file_path} 指定ブランチの指定ファイルとの差分を表示

git add

コマンド 機能
git add ${path} 指定ファイルをステージング
git add -A すべての変更差分をステージング
git add -p 対話的にファイルの一部をステージング

git commit

コマンド 機能
git commit --message ${commit_message} コミットメッセージ入力
git commit --amend 直前commitの修正
git commit -n commit hookを無視してcommit

git push

コマンド 機能
git push --set-upstream origin ${branch} 上流ブランチの設定
git push --force 強制push。自分しか利用していないことが保証できるブランチ以外では絶対に使わない。運用ルールで利用禁止されている禁忌のコマンド

git branch

コマンド 機能
git branch ローカルリポジトリのブランチを表示
git branch -D ${branch} 指定したブランチをローカルリポジトリから削除
git branch --contains 現在のブランチを表示
  • git branch | grep ${hoge} | xargs git branch -Dで「grepで抽出したブランチをローカルリポジトリから削除」をよく使う。
  • git branch --containsは git rev-parse --abbrev-ref HEAD みたいにカレントブランチを抽出する際に使ったりする。

git fetch

基本的に -p オプションしか使っていないです。

コマンド 機能
git fetch リモートリポジトリの情報をローカルリポジトリに反映
git fetch --prune リモートリポジトリの情報をローカルリポジトリに反映し、かつリモートリポジトリで削除ブランチがあればローカルリポジトリでも削除

git merge

コマンド 機能
git merge ${branch} ${branch}を現在のブランチにマージ
git merge --theirs(or --ours) コンフリクト時にマージ元(マージ先)を取り込む
git merge --no-fast-forward マージコミットを作成して取り込む
git merge --abort コンフリクトした場合に、一旦マージ前に戻す

git show

基本的にgit log → commit_hashを確認 → git show の流れで利用しています。

コマンド 機能
git show ${commithash} 該当hashの変更差分を確認する

git log

コマンド 機能
git log --oneline ログを表示する際に、commitメッセージを1行で表示
git log --short ログを要約して表示
git log -p ログを表示する際に、変更差分も表示
git log --grep=${hoge} ログをhogeで検索する

git stash

コマンド 機能
git stash save ${stash_message} ステージ済みのファイルを名前をつけて退避する
git stash list 退避したものを一覧を確認する
git stash pop 退避したstashの一番上を適用する
git stash apply ${stash_no} 指定したstashを適用する

git reset

コマンド 機能
git reset {$path} ステージング済みのファイルをunstageする
git reset --hard (or --soft) ${commit_hash} 指定したcommit_hashの状態に戻る

git cherry-pick

コマンド 機能
git cherry-pick ${commithash} 他ブランチなどから指定したcommitを取り込む

git revert

コマンド 機能
git revert ${commithash}` 指定したcommit_hashの内容を打ち消すcommitを作成する。

git tag

コマンド 機能
git tag list タグのリストを表示
git tag -a ${tag} -m "tag message" 任意のタグをタグコメントを追記しながら登録
git push --tags タグをpushする
git tag --delete ${tag} tagを削除する
git push --delete origin ${tag} GitHub上にあるタグを削除する

.gitconfigでのalias設定

よく使うコマンドは ~/.gitconfig にaliasでまとめておくと、コマンドを打つ際に git chekcout -b ${hoge} でなく git cob ${hoge} のように省エネできるので、適宜登録しておくと良いでしょう。

以下、私が登録しているものの抜粋です。
ほとんど使わないものも登録していますが、辞書のように「こんなオプションあったなぁ」と思い出すのにも使えたりします。
(最近、整理していないのでコマンドミスあったらすみません。)

~/.gitconfig
[alias]
	ad = add
	ada = add -A
	br = branch
	bra = branch -av
	cl = clean -df
	cm = commit --verbose
	co = checkout
	cob = checkout -b
    # !"hoge(); hoge" とすることでhogeメソッドを登録しつつ、hogeを叩くことができ、より柔軟性高く利用することができる
    cor = !"f() { git fetch -p && git checkout -b $1 origin/$1 }; f"
	cp = cherry-pick
	df = diff
	dfc = diff --cahed
	dfh = diff HEAD
	dft = difftool
	dfr = !git diff origin `git rev-parse --abbrev-ref HEAD`
	fp  = fetch -p
	lg  = log --stat
	lgg = !git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    ps = !git push origin `git rev-parse --abbrev-ref HEAD`
	pl = !git pull origin `git rev-parse --abbrev-ref HEAD`
	plr = pull --rebase
    pr  = !"f() { git log --merges --oneline --reverse --ancestry-path $1...master | grep 'Merge pull request' | head -n 1; }; f"
	rf  = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
    rfs = !git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)' | awk -F' ' '{print $2}' | xargs git reset --hard
	st = status
	sc = stash clear
    sk  = update-index --skip-worktree
    su  = ls-files --others --exclude-standard
    usk = update-index --no-skip-worktree
	vi  = !nvim ~/.gitconfig

まとめ

GUIツールを使っている場合にはあまりgitコマンドにはお世話にならないかもしれません。ただ、コマンドをある程度使えるようになっておくとGUIが叩いてるコマンドの詳細を知れたり、shellスクリプトでGitコマンドをどう利用すればよいかをスムーズに考えられたりするかもしれないので、知っておくのに損はないかと思います。私はタイピングが好きなので、単にコマンドを叩きたいという理由で叩覚えることが多いですが......。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?