Awesome Git and Git Flow Cheat Sheet
Git and Git Flow Cheat Sheetを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
📖 概要
この包括的なGitチートシートは、すべてを暗記せずにGitコマンドを使いこなすための早見表です。初心者から経験豊富な開発者まで、主要なGit操作を素早く確認できます。
コントリビューションを歓迎します! 次のような協力が可能です:
- 文法上の誤りを修正
- 新しいコマンドを追加
- 他の言語へ翻訳
- 説明を改善
📋 目次
- 🔧 セットアップ
- ⚙️ 設定ファイル
- 🆕 リポジトリの作成
- 📝 ローカルの変更
- 🔍 検索
- 📖 コミット履歴
- 📁 移動/名前変更
- 🌿 ブランチとタグ
- 🔄 更新と公開
- 🔀 マージとリベース
- ↩️ 取り消し
- 🌊 Git Flow
- 🌍 その他の言語
🔧 セットアップ
設定の表示
現在の設定を表示:
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.gitHTTPSを使用:
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-avhmacOS (MacPorts):
port install git-flowLinux(Debian系):
sudo apt-get install git-flowWindows (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 MYFEATUREdevelopを基点にFeatureブランチを作成し、そのブランチへ切り替えます。
Featureを完了:
git flow feature finish MYFEATURE次の処理を行います:
- MYFEATUREをdevelopへマージ
- Featureブランチを削除
- developへ戻る
共同作業用にFeatureを公開:
git flow feature publish MYFEATURE公開済みFeatureを取得:
git flow feature pull origin MYFEATUREoriginの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 RELEASEReleaseを完了:
git flow release finish RELEASE次の処理を行います:
- Releaseブランチをmasterへマージ
- Releaseへタグを付与
- Releaseをdevelopへバックマージ
- Releaseブランチを削除
💡 忘れずに:
git push --tagsでタグをpushしてください。
🔥 Hotfix
Hotfixは本番稼働中のバージョンにある重大な問題を修正します。master上の該当タグから分岐します。
Hotfixを開始:
git flow hotfix start VERSION [BASENAME]Hotfixを完了:
git flow hotfix finish VERSIONdevelopとmasterの両方へマージし、master側のマージにタグを付けます。
📊 コマンド概要
🌊 Git Flow構成図
🌍 その他の言語
このチートシートは複数の言語で利用できます:
| 言語 | リンク |
|---|---|
| 🇸🇦 アラビア語 | 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コマンドを追加
- 🌍 新しい言語へ翻訳
- 💡 説明を改善
- 📝 書式を改善
コントリビューション方法:
- このリポジトリをforkする
- Featureブランチを作成する(
git checkout -b feature/AmazingFeature) - 変更をコミットする(
git commit -m 'Add some AmazingFeature') - ブランチへpushする(
git push origin feature/AmazingFeature) - Pull Requestを作成する
📄 ライセンス
このプロジェクトはオープンソースで、MIT Licenseの下で利用できます。
⭐ 役に立った場合は、このリポジトリにスターを付けてください。