このページの内容

Awesome Git and Git Flow Cheat Sheet

Git and Git Flow Cheat Sheetを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

📖 概要

この包括的なGitチートシートは、すべてを暗記せずにGitコマンドを使いこなすための早見表です。初心者から経験豊富な開発者まで、主要なGit操作を素早く確認できます。

コントリビューションを歓迎します! 次のような協力が可能です:

  • 文法上の誤りを修正
  • 新しいコマンドを追加
  • 他の言語へ翻訳
  • 説明を改善

📋 目次


🔧 セットアップ

設定の表示

現在の設定を表示:

git config --list

リポジトリ設定を表示:

git config --local --list

グローバル設定を表示:

git config --global --list

システム設定を表示:

git config --system --list

ユーザー設定

バージョン履歴に記録する名前を設定:

git config --global user.name "[firstname lastname]"

メールアドレスを設定:

git config --global user.email "[valid-email]"

表示とエディターの設定

コマンドラインの自動色付けを有効化:

git config --global color.ui auto

コミット用のグローバルエディターを設定:

git config --global core.editor vi

⚙️ 設定ファイル

適用範囲場所コマンドフラグ
リポジトリ<repo>/.git/config--local
ユーザー~/.gitconfig--global
システム/etc/gitconfig--system

🆕 リポジトリの作成

既存リポジトリのクローン

SSHを使用:

git clone ssh://user@domain.com/repo.git

HTTPSを使用:

git clone https://domain.com/user/repo.git

新しいリポジトリの初期化

現在のディレクトリにリポジトリを作成:

git init

指定したディレクトリにリポジトリを作成:

git init <directory>

📝 ローカルの変更

状態と差分の確認

作業ディレクトリの状態を表示:

git status

追跡対象ファイルの変更を表示:

git diff

指定したファイルの変更を表示:

git diff <file>

変更のステージング

現在の変更をすべて追加:

git add .

指定したファイルを追加:

git add <filename1> <filename2>

ファイルの一部を対話的に追加:

git add -p <file>

変更のコミット

追跡対象ファイルの変更をすべてコミット:

git commit -a

ステージ済みの変更をコミット:

git commit

メッセージ付きでコミット:

git commit -m 'message here'

ステージングを省略してメッセージ付きでコミット:

git commit -am 'message here'

指定した日付でコミット:

git commit --date="`date --date='n day ago'`" -am "<Commit Message Here>"

直前のコミットを変更

⚠️ 警告: 公開済みコミットをamendしないでください。

直前のコミットをamend:

git commit -a --amend

コミットメッセージを変えずにamend:

git commit --amend --no-edit

コミッター日時を変更:

GIT_COMMITTER_DATE="date" git commit --amend

作者日時を変更:

git commit --amend --date="date"

変更のstash

現在の変更を一時保存:

git stash

直前にstashした変更を適用:

git stash apply

指定したstashを適用:

git stash apply stash@{stash_number}

利用可能なstashはgit stash listで確認できます。

直前のstashを削除:

git stash drop

未コミットの変更を別ブランチへ移動:

git stash
git checkout branch2
git stash pop

🔍 検索

テキスト検索

すべてのファイルからテキストを検索:

git grep "Hello"

指定したバージョンを検索:

git grep "Hello" v2.5

コミット検索

指定したキーワードを導入したコミットを検索:

git log -S 'keyword'

正規表現で検索:

git log -S 'keyword' --pickaxe-regex

📖 コミット履歴

基本的な履歴

すべてのコミットを詳細表示:

git log

各コミットを1行で表示:

git log --oneline

指定した作者のコミットを表示:

git log --author="username"

指定したファイルの変更履歴を表示:

git log -p <file>

高度な履歴

ブランチを比較:

git log --oneline <origin/master>..<remote/master> --left-right

誰がいつ何を変更したか表示:

git blame <file>

参照ログ

参照ログを表示:

git reflog show

参照ログを削除:

git reflog delete

📁 移動/名前変更

ファイル名を変更:

git mv Index.txt Index.html

🌿 ブランチとタグ

ブランチ一覧

ローカルブランチを一覧表示:

git branch

ローカルとリモートの全ブランチを一覧表示:

git branch -a

リモートブランチを一覧表示:

git branch -r

マージ済みブランチを一覧表示:

git branch --merged

ブランチの切り替えと作成

既存ブランチへ切り替え:

git checkout <branch>

新しいブランチを作成して切り替え:

git checkout -b <branch>

直前のブランチへ切り替え:

git checkout -

既存ブランチから新しいブランチを作成:

git checkout -b <new_branch> <existing_branch>

指定したコミットからブランチを作成:

git checkout <commit-hash> -b <new_branch_name>

切り替えずにブランチを作成:

git branch <new-branch>

追跡ブランチを作成:

git branch --track <new-branch> <remote-branch>

ブランチ操作

別ブランチから単一ファイルを取り出す:

git checkout <branch> -- <filename>

別ブランチの指定コミットを適用:

git cherry-pick <commit hash>

現在のブランチ名を変更:

git branch -m <new_branch_name>

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

git branch -d <branch>

ローカルブランチを強制削除:

git branch -D <branch>

⚠️ 警告: 未マージの変更は失われます。

タグ

HEADにタグを作成:

git tag <tag-name>

注釈付きタグを作成:

git tag -a <tag-name>

メッセージ付きタグを作成:

git tag <tag-name> -am 'message here'

すべてのタグを一覧表示:

git tag

タグをメッセージ付きで一覧表示:

git tag -n

🔄 更新と公開

リモート管理

設定済みリモートを一覧表示:

git remote -v

リモート情報を表示:

git remote show <remote>

新しいリモートを追加:

git remote add <remote> <url>

リモート名を変更:

git remote rename <remote> <new_remote>

リモートを削除:

git remote rm <remote>

ℹ️ 注: 削除されるのはローカルのリモート参照だけで、リモートリポジトリ自体は削除されません。

FetchとPull

マージせずに変更を取得:

git fetch <remote>

変更を取得してマージ:

git pull <remote> <branch>

メインブランチから変更を取得:

git pull origin master

リベース付きでpull:

git pull --rebase <remote> <branch>

Pushと公開

ローカルの変更を公開:

git push <remote> <branch>

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

# Git v1.7.0+
git push <remote> --delete <branch>

# Git v1.5.0+
git push <remote> :<branch>

タグを公開:

git push --tags

🔀 マージとリベース

マージ操作

ブランチを現在のHEADへマージ:

git merge <branch>

マージツールをグローバル設定:

git config --global merge.tool meld

設定済みのマージツールを使用:

git mergetool

リベース操作

⚠️ 警告: 公開済みコミットをリベースしないでください。

現在のHEADをブランチ上へリベース:

git rebase <branch>

リベースを中止:

git rebase --abort

競合解決後にリベースを続行:

git rebase --continue

競合の解決

ファイルを解決済みとして記録:

git add <resolved-file>

解決済みファイルを削除:

git rm <resolved-file>

コミットのsquash

対話的リベースでsquash:

git rebase -i <commit-just-before-first>

squash設定例:

# 変更前
pick <commit_id>
pick <commit_id2>
pick <commit_id3>

# 変更後(commit_id2とcommit_id3をcommit_idへsquash)
pick <commit_id>
squash <commit_id2>
squash <commit_id3>

↩️ 取り消し

変更の破棄

ローカルの変更をすべて破棄:

git reset --hard HEAD

すべてのファイルをステージから外す:

git reset HEAD

指定したファイルの変更を破棄:

git checkout HEAD <file>

Reset操作

以前のコミットへresetし、すべての変更を破棄:

git reset --hard <commit>

リモートブランチの状態へreset:

git reset --hard <remote/branch>
# 例: git reset --hard upstream/master

変更を未ステージ状態で保持してreset:

git reset <commit>

未コミットのローカル変更を保持してreset:

git reset --keep <commit>

コミットのrevert

コミットをrevertし、逆の変更を持つ新しいコミットを作成:

git revert <commit>

無視対象ファイルの整理

誤ってコミットした、本来無視すべきファイルを追跡対象から外す:

git rm -r --cached .
git add .
git commit -m "remove ignored files"

🌊 Git Flow

改良版Git-flow: git-flow-avh

📋 目次


🔧 セットアップ {#setup-1}

前提条件: 動作するGit環境が必要です。Git-flowはmacOS、Linux、Windowsで動作します。

macOS (Homebrew):

brew install git-flow-avh

macOS (MacPorts):

port install git-flow

Linux(Debian系):

sudo apt-get install git-flow

Windows (Cygwin):

wgetとutil-linuxが必要です。

wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install <state> | bash

🚀 はじめに

プロジェクトに合わせてGit-flowを初期化します。

対話形式で初期化:

git flow init

ブランチ命名規則について質問されます。既定値を推奨します。

既定値で初期化:

git flow init -d

✨ Feature

Featureブランチは、次回リリース向けの新機能開発に使用します。通常は開発者のリポジトリ内だけに存在します。

新しいFeatureを開始:

git flow feature start MYFEATURE

developを基点にFeatureブランチを作成し、そのブランチへ切り替えます。

Featureを完了:

git flow feature finish MYFEATURE

次の処理を行います:

  1. MYFEATUREをdevelopへマージ
  2. Featureブランチを削除
  3. developへ戻る

共同作業用にFeatureを公開:

git flow feature publish MYFEATURE

公開済みFeatureを取得:

git flow feature pull origin MYFEATURE

originのFeatureを追跡:

git flow feature track MYFEATURE

🎁 Releaseの作成

Releaseブランチは、新しい本番リリースの準備に使用し、軽微なバグ修正やメタデータの整備を行えます。

Releaseを開始:

git flow release start RELEASE [BASE]

developからReleaseブランチを作成します。必要に応じて[BASE]コミットのSHA-1を指定できます。

Releaseを公開:

git flow release publish RELEASE

リモートのReleaseを追跡:

git flow release track RELEASE

Releaseを完了:

git flow release finish RELEASE

次の処理を行います:

  1. Releaseブランチをmasterへマージ
  2. Releaseへタグを付与
  3. Releaseをdevelopへバックマージ
  4. Releaseブランチを削除

💡 忘れずに: git push --tagsでタグをpushしてください。


🔥 Hotfix

Hotfixは本番稼働中のバージョンにある重大な問題を修正します。master上の該当タグから分岐します。

Hotfixを開始:

git flow hotfix start VERSION [BASENAME]

Hotfixを完了:

git flow hotfix finish VERSION

developとmasterの両方へマージし、master側のマージにタグを付けます。


📊 コマンド概要

Git Flow Commands

🌊 Git Flow構成図

Git Flow Schema


🌍 その他の言語

このチートシートは複数の言語で利用できます:

言語リンク
🇸🇦 アラビア語git-cheat-sheet-ar.md
🇧🇩 ベンガル語git-cheat-sheet-bn.md
🇧🇷 ブラジルポルトガル語git-cheat-sheet-pt_BR.md
🇨🇳 中国語git-cheat-sheet-zh.md
🇩🇪 ドイツ語git-cheat-sheet-de.md
🇬🇷 ギリシャ語git-cheat-sheet-el.md
🇮🇳 ヒンディー語git-cheat-sheet-hi.md
🇰🇷 韓国語git-cheat-sheet-ko.md
🇵🇱 ポーランド語git-cheat-sheet-pl.md
🇪🇸 スペイン語git-cheat-sheet-es.md
🇹🇷 トルコ語git-cheat-sheet-tr.md

🤝 コントリビューション

コントリビューションを歓迎します。次のような協力が可能です:

  • 🐛 バグや誤字を報告
  • ✨ 新しいGitコマンドを追加
  • 🌍 新しい言語へ翻訳
  • 💡 説明を改善
  • 📝 書式を改善

コントリビューション方法:

  1. このリポジトリをforkする
  2. Featureブランチを作成する(git checkout -b feature/AmazingFeature
  3. 変更をコミットする(git commit -m 'Add some AmazingFeature'
  4. ブランチへpushする(git push origin feature/AmazingFeature
  5. Pull Requestを作成する

📄 ライセンス

このプロジェクトはオープンソースで、MIT Licenseの下で利用できます。


⭐ 役に立った場合は、このリポジトリにスターを付けてください。