📙

【Git】.gitconfigの設定

2024/08/29に公開

はじめに

初めての方も、そうでない方もこんにちは!
現役ゲームプログラマーのたむぼーです。
自己紹介を載せているので、気になる方は見ていただければ嬉しいです!

今回は
 .gitconfigの設定
として、僕がgitを使うときによく使うコマンド等を紹介します

https://zenn.dev/tmb/articles/1072f8ea010299

.gitconfigについて

.gitconfigとは、gitの設定を記述するものです!

.gitconfigは3段階の設定がある

システム全体:system
ユーザ全体:global
対象リポジトリのみ:local

優先度
local > global > system
※特殊な設定が必要なければ、globalを変更するだけでいいです!

.gitconfigの詳細

セクション 説明
[user] ユーザー情報設定
[color] 出力に色を付ける設定
[push] pushの動作を設定
[core] 基本設定
[alias] コマンドのエイリアス(ショートカット)を定義
[init] リポジトリ初期化に関する設定
[filter "lfs"] Git Large File Storage (LFS) に関連する設定
[status] ステータス表示の設定

コマンドで変更する方法

コマンドで設定もできますが、ファイル直接いじってもいいです!

git config --global user.name "target_name"
// ↑のコマンドについて
// git config → Git の設定を変更したり確認するコマンドだよ!
// --global → ユーザー全体(ホームディレクトリ)に影響する設定だよ~
// user.name "target_name" → [user] セクションの name を target_name にするよ~

// Windows なら C:\Users\user_name\.gitconfig が書き換わるはずだよ!

実際の設定ファイル

※コピペする場合、[user]セクションのnameとemailはお使いの物に変更してください~
※nameで指定した名前が、gitのログで表示されるauthorになります!

.gitconfig
.gitconfig
[user]
  name = #名前
  email = #メールアドレス
[color]
  diff = auto               # 差分の表示を自動で色付け
  status = auto             # ステータスの表示を自動で色付け
  branch = auto             # ブランチ名の表示を自動で色付け
  interactive = auto        # インタラクティブな操作の表示を自動で色付け
  grep = auto               # grepコマンドの出力を自動で色付け
  ui = auto                 # Git UIの表示を自動で色付け
[push]
  default = tracking        # `git push` のデフォルト動作を `tracking` に設定(リモートの同名ブランチにプッシュ)
[core]
  excludesfile = ~/.gitignore # グローバルな.gitignoreファイルのパスを指定
  editor = vim               # デフォルトのテキストエディタをVimに設定
  symlinks = true            # シンボリックリンクを有効にする
  autoCRLF = false           # 自動でCRLF変換をしない
  quotepath = false          # 日本語のファイル名をエスケープせずそのまま表示
  eol = lf                   # 改行コードをLFに設定
  crlf = false               # 改行コードの自動変換を無効化
[alias]
  st = status -s              # 簡潔な形式で作業ツリーの状態を表示
  sta = status                # 詳細な形式で作業ツリーの状態を表示
  ft = fetch                  # リモートリポジトリから変更を取得
  ftp = fetch --prune         # リモートの削除済みブランチの情報を取得
  ad = add                    # 変更をステージに追加
  ci = commit                 # ステージされた変更をコミット
  cim = commit -m             # ステージされた変更を指定したメッセージでコミットする
  cam = commit --amend -m     # 直前のコミットに変更を追加し、コミットメッセージも変更
  co = checkout               # ブランチを切り替える、または特定のコミットをチェックアウト
  cb = checkout -b            # 新しいブランチを作成して切り替える
  coou = checkout --ours              # 現在チェックアウトしているブランチを優先
  coth = checkout --theirs            # マージ先のブランチを優先
  # branch関連
  br = branch                 # ローカルのブランチ一覧を表示
  ba = branch -a              # ローカルとリモートを含むすべてのブランチを表示
  bm = branch --merged        # 現在のブランチにマージ済みのブランチを表示
  bn = branch --no-merged     # 現在のブランチにマージされていないブランチを表示
  bo = branch -r              # リモートブランチの一覧を表示
  # branch削除関連
  bdel = branch --delete      # ローカルブランチを削除
  pdel = push --delete        # リモートブランチを削除
  bfdel = branch -D           # ローカルブランチを強制削除
  # logをtree表示
  loga = log --graph --all --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit                                      # 全ブランチのコミット履歴をツリー形式で表示
  logaa = "!f() { git log --graph --all --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit --author=\"$1\"; }; f"  # 指定した著者による全ブランチのコミット履歴をツリー形式で表示
  logs = log --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit                                                    # 現在のブランチのコミット履歴をツリー形式で表示
  logsa = "!f() { git log --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit --author=\"$1\"; }; f"                # 指定した著者による現在のブランチのコミット履歴をツリー形式で表示
  # diff関連
  df = diff                  # 差分を表示
  dfm = "!f() { git diff main..$1; }; f"                # 指定したブランチと main ブランチの差分を表示する
  dfmn = "!f() { git diff --name-only main..$1; }; f"   # 指定したブランチと main ブランチの差分のファイル名のみを表示する
  dff = "!f() { git diff $1..$2; }; f"                  # 2つの指定したブランチ間の差分を表示する
  dffn = "!f() { git diff --name-only $1..$2; }; f"     # 2つの指定したブランチ間の差分のファイル名のみを表示する
  d1 = diff HEAD~            # 最新コミットと1つ前のコミットの差分を表示
  d2 = diff HEAD~~           # 最新コミットと2つ前のコミットの差分を表示
  d3 = diff HEAD~~~          # 最新コミットと3つ前のコミットの差分を表示
  d4 = diff HEAD~~~~         # 最新コミットと4つ前のコミットの差分を表示
  d5 = diff HEAD~~~~~        # 最新コミットと5つ前のコミットの差分を表示
  d10 = diff HEAD~~~~~~~~~~  # 最新コミットと10個前のコミットの差分を表示
  # stash関連
  sh = stash                          # 作業内容を一時退避
  shu = stash -u                      # 作業内容と未追跡ファイルを一時退避
  shs = stash save                    # メッセージ付きで作業内容を一時退避
  shsu = stash save -u                # メッセージ付きで作業内容と未追跡ファイルを一時退避
  shps = stash push                   # メッセージ付きで作業内容を一時退避
  shpsu = stash push -u               # メッセージ付きで作業内容と未追跡ファイルを一時退避
  shl = stash list                    # 一時退避された作業内容の一覧を表示
  shp = stash pop                     # 一時退避した最新の作業内容を適用して削除
  sha = "!f() { git stash apply stash@{${1}}; }; f"  # 一時退避した特定の作業内容を適応
  shd = "!f() { git stash drop stash@{${1}}; }; f"  # 一時退避した特定の作業内容を削除
  shc = stash clear                   # すべての一時退避した作業内容を削除
# github config in /etc/gitconfig
[init]
  defaultBranch = master     # 新規リポジトリ作成時のデフォルトブランチ名を`master`に設定
[filter "lfs"]
  process = git-lfs filter-process # Git Large File Storage (LFS)のフィルタープロセスを設定
  required = true            # LFSフィルターを必須にする
  clean = git-lfs clean -- %f  # LFSによりクリーンアップされるファイルの設定
  smudge = git-lfs smudge -- %f # LFSによりファイルがワーキングディレクトリに復元される際の設定
[status]
  color = auto               # ステータスの表示を自動で色付け

よく使うコマンド紹介

・作業ツリーの状態を表示

// status -s
git st

・差分の内容を表示

// diff
git df

・すべての差分をステージに追加

// add .
git ad .

・特定の差分をステージに追加

// add path/to/name
git ad path/to/name

・ステージに追加された差分をコミット

// commit -m "コメント"
git cim "コメント"

・直前のコミットコメントを変更

// commit --amend -m "直前のコミットコメントを変更"
git cam "直前のコミットコメントを変更"

・ステージング前のすべての差分を消す

// checkout .
git co .

・ステージング前の特定の差分を消す

// checkout path/to/name
git co path/to/name

・チェックアウト

// checkout target_branch
git co target_branch

・ブランチを作成

// checkout -b new_branch
git cb new_branch

・リモートの削除済みブランチの情報を取得

// fetch --prune
git ftp

・ローカルブランチを表示

// branch
git br

・すべてのブランチを表示

// branch -a
git ba

・ローカルブランチを削除

// branch --delete old_branch
git bdel old_branch

・ローカルブランチを削除(強制)

// branch -D old_branch
git bfdel old_branch

・リモートブランチを削除

// push --delete origin old_branch
git pdel origin old_branch

・全ブランチのコミット履歴を表示

// log --graph --all --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit
git loga

・指定した人がコミットした全ブランチのコミット履歴を表示

// log --graph --all --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit --author target_author
git logaa target_author

・現在のブランチのコミット履歴を表示

// log --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit 
git logs

・指定した人がコミットした現在のブランチのコミット履歴を表示

// log --color --graph --pretty=format:'%C(yellow)%h %C(cyan)%cn %Creset%s %Cred%d%Creset' --abbrev-commit --author target_author
git logsa target_author

・メッセージ付きで作業内容を一時退避

// stash save "退避コメント"
git shs "退避コメント"

・メッセージ付きで作業内容と未追跡ファイルを一時退避

// stash save -u "退避コメント"
git shsu "退避コメント"

・一時退避された作業内容の一覧を表示

// stash list
git shl

・一時退避した最新の作業内容を適用して削除

// stash pop
git shp

・すべての一時退避した作業内容を削除

// stash clear
git shc

・(コンフリクト時)現在チェックアウトしている(branch_b)ブランチを優先

// git co branch_b -> branch_bに切り替え
// git merge branch_a -> branch_bにbranch_aをマージ
// コンフリクト発生!!したとする

// checkout --ours path/to/name
git coou path/to/name

・(コンフリクト時)マージ先(branch_a)のブランチを優先

// git co branch_b -> branch_bに切り替え
// git merge branch_a -> branch_bにbranch_aをマージ
// コンフリクト発生!!したとする

// checkout --theirs path/to/name
git coth path/to/name

さいごに

もし、このコマンドをエイリアスに登録しとくと便利だよ~
ってのあったら、コメントで教えてください~!

Discussion