Gitで困っている？探せ！Gitの全てをgit-flight-rulesに置いてきた

この記事は[エイチームブライズ/エイチームコネクト/エイチーム引越し侍 Advent Calendar 2018](https://qiita.com/advent-calendar/2018/hikkoshi)　21日目の記事です。本日はエイチーム引越し侍1.5号外人エンジニア@euntasが記事を書きます。

# 概要
毎日Gitを使っていてもわからないことは絶えず、苦しんでいましたが、
質問集を集めた良いプロジェクトを発見しましたので紹介します。

URL: https://github.com/k88hudson/git-flight-rules

# git-flight-rulesとは？
Gitを使う時の問題解決方法をまとめた文書です。
コミットメッセージを間違って書いたり、リベースを間違ったりした場合の問題に対して解決方法が書いてあります。

去年ですがGithubトレンドに上がる程、多くの呼応を得たプロジェクトです。

原本は英語ですが、色んな言語で翻訳されてます。
現在英語、スペイン語、ロシア語、中国語、韓国語、ベトナム語、フランス語文書があります。

↓こんな感じ
<img width="508" alt="スクリーンショット 2018-12-20 2.24.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/227271/84208594-ec38-c12a-4bc0-528083f95a97.png">
<img width="972" alt="スクリーンショット 2018-12-20 2.22.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/227271/588bb834-c2c6-c044-ee32-357777982f73.png">

# コンテンツ一覧
※　リンクは英語原文に飛びます

  - [リポジトリ](https://github.com/k88hudson/git-flight-rules#repositories)
    - [ローカルリポジトリで始めたい](https://github.com/k88hudson/git-flight-rules#i-want-to-start-a-local-repository)
    - [リモートリポジトリをコピーしたい](https://github.com/k88hudson/git-flight-rules#i-want-to-clone-a-remote-repository)
    - [間違ったリモートリポジトリだった](https://github.com/k88hudson/git-flight-rules#i-set-the-wrong-remote-repository)
  - [コミット修正](https://github.com/k88hudson/git-flight-rules#editing-commits)
    - [私が先コミットしたものは？](https://github.com/k88hudson/git-flight-rules#what-did-i-just-commit)
    - [コミットメッセージ間違った](https://github.com/k88hudson/git-flight-rules#i-wrote-the-wrong-thing-in-a-commit-message)
    - [コミットを他の名前とメールでしてしまった](https://github.com/k88hudson/git-flight-rules#i-committed-with-the-wrong-name-and-email-configured)
    - [過去のコミットでファイル一個を削除したい](https://github.com/k88hudson/git-flight-rules#i-want-to-remove-a-file-from-the-previous-commit)
    - [ラストコミットを削除したい](https://github.com/k88hudson/git-flight-rules#i-want-to-delete-or-remove-my-last-commit)
    - [任意のコミットを消す](https://github.com/k88hudson/git-flight-rules#deleteremove-arbitrary-commit)
    - [修正したコミットをプッシュしたけどエラーメッセージが出る](https://github.com/k88hudson/git-flight-rules#i-tried-to-push-my-amended-commit-to-a-remote-but-i-got-an-error-message)
    - [ハードリセットをしたけど戻したい](https://github.com/k88hudson/git-flight-rules#i-accidentally-did-a-hard-reset-and-i-want-my-changes-back)
    - [ミスでマージをコミット、プッシュしてしまった](https://github.com/k88hudson/git-flight-rules#i-accidentally-committed-and-pushed-a-merge)
    - [重要なファイルをコミット、プッシュしてしまった](https://github.com/k88hudson/git-flight-rules#i-accidentally-committed-and-pushed-files-containing-sensitive-data)
    - [I need to change the content of a commit which is not my last](https://github.com/k88hudson/git-flight-rules#i-need-to-change-the-content-of-a-commit-which-is-not-my-last)
  - [ステージング](https://github.com/k88hudson/git-flight-rules#staging)
    - [過去のコミットにステージ変更点を追加したい](https://github.com/k88hudson/git-flight-rules#i-need-to-add-staged-changes-to-the-previous-commit)
    - [全体じゃなくて新しいファイルだけステージに上げたい](https://github.com/k88hudson/git-flight-rules#i-want-to-stage-part-of-a-new-file-but-not-the-whole-file)
    - [１個のファイル変更点を２個の別のコミットに残したい](https://github.com/k88hudson/git-flight-rules#i-want-to-add-changes-in-one-file-to-two-different-commits)
    - [ステージに上げた修正が多すぎて、複数のコミットに分けたい](https://github.com/k88hudson/git-flight-rules#i-staged-too-many-edits-and-i-want-to-break-them-out-into-a-separate-commit)
    - [まだステージングに上がってない変更点をステージングに追加して、ステージングにある変更点を抜きたい](https://github.com/k88hudson/git-flight-rules#i-want-to-stage-my-unstaged-edits-and-unstage-my-staged-edits)
  - [ステージ前の変更点](https://github.com/k88hudson/git-flight-rules#unstaged-edits)
    - [ステージ前の変更点を新しいブランチに移したい](https://github.com/k88hudson/git-flight-rules#i-want-to-move-my-unstaged-edits-to-a-new-branch)
    - [ステージ前の変更点を作っておいた他のブランチに移りたい](https://github.com/k88hudson/git-flight-rules#i-want-to-move-my-unstaged-edits-to-a-different-existing-branch)
    - [私のローカルにあるコミットされてない変更点を全部無視したい (ステージングされたかは関係なく)](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-my-local-uncommitted-changes-staged-and-unstaged)
    - [ステージされてない特定変更点を消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-specific-unstaged-changes)
    - [ステージされてない特定ファイルを消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-specific-unstaged-files)
    - [ローカルにあるステージされてない変更点だけ消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-only-my-unstaged-local-changes)
    - [トラッキングされてないファイル全部消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-all-of-my-untracked-files)
    - [ステージに上がってる特定ファイルをステージから抜きたい](https://github.com/k88hudson/git-flight-rules#i-want-to-unstage-a-specific-staged-file)
  - [ブランチ](https://github.com/k88hudson/git-flight-rules#branches)
    - [全てのブランチリストが見たい](https://github.com/k88hudson/git-flight-rules#i-want-to-list-all-branches)
    - [コミットでブランチを作る](https://github.com/k88hudson/git-flight-rules#create-a-branch-from-a-commit)
    - [他のブランチでプールしてしまった](https://github.com/k88hudson/git-flight-rules#i-pulled-frominto-the-wrong-branch)
    - [ローカルのコミットを消してサーバにある私のブランチと合わせたい](https://github.com/k88hudson/git-flight-rules#i-want-to-discard-local-commits-so-my-branch-is-the-same-as-one-on-the-server)
    - [新しいブランチの代わりにマスターにコミットしてしまった](https://github.com/k88hudson/git-flight-rules#i-committed-to-master-instead-of-a-new-branch)
    - [他のレファレンスみたいなところで全てのファイルを維持したい](https://github.com/k88hudson/git-flight-rules#i-want-to-keep-the-whole-file-from-another-ref-ish)
    - [一つのブランチに他のブランチに残すべきのコミットを複数残してしまった](https://github.com/k88hudson/git-flight-rules#i-made-several-commits-on-a-single-branch-that-should-be-on-different-branches)
    - [アップストリームで消されたローカルブランチを消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-delete-local-branches-that-were-deleted-upstream)
    - [ブランチを消してしまった](https://github.com/k88hudson/git-flight-rules#i-accidentally-deleted-my-branch)
    - [ブランチを消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-delete-a-branch)
    - [複数のブランチを消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-delete-multiple-branches)
    - [ブランチの名前の変えたい](https://github.com/k88hudson/git-flight-rules#i-want-to-rename-a-branch)
    - [他の人が作業中のリモートブランチにチェックアウトしたい](https://github.com/k88hudson/git-flight-rules#i-want-to-checkout-to-a-remote-branch-that-someone-else-is-working-on)
    - [現在のローカルブランチで新しいリモートブランチを作りたい](https://github.com/k88hudson/git-flight-rules#i-want-to-create-a-new-remote-branch-from-current-local-one)
    - [リモートヴランチをローカルブランチのためのアップストリームに設定したい](https://github.com/k88hudson/git-flight-rules#i-want-to-set-a-remote-branch-as-the-upstream-for-a-local-branch)
    - [HEADをデフォルトリモートブランチでトラッキングするように設定したい](https://github.com/k88hudson/git-flight-rules#i-want-to-set-my-head-to-track-the-default-remote-branch)
    - [他のブランチに変更点を間違って残してしまった](https://github.com/k88hudson/git-flight-rules#i-made-changes-on-the-wrong-branch)
  - [リベースとマージ](https://github.com/k88hudson/git-flight-rules#rebasing-and-merging)
    - [リベース/マージ したことを戻したい](https://github.com/k88hudson/git-flight-rules#i-want-to-undo-rebasemerge)
    - [リベースしたけど、強制プッシュしたくない](https://github.com/k88hudson/git-flight-rules#i-rebased-but-i-dont-want-to-force-push)
    - [コミットを組合わせたい](#i-need-to-combine-commits)
      - [安全なマージ戦略](#safe-merging-strategy)
      - [ブランチをコミット一個でマージしないと](https://github.com/k88hudson/git-flight-rules#i-need-to-merge-a-branch-into-a-single-commit)
      - [プッシュされてないコミットだけ組合せたい](https://github.com/k88hudson/git-flight-rules#i-want-to-combine-only-unpushed-commits)
      - [マージを中断したい](https://github.com/k88hudson/git-flight-rules#i-need-to-abort-the-merge)
    - [I need to update the parent commit of my branch](https://github.com/k88hudson/git-flight-rules#i-need-to-update-the-parent-commit-of-my-branch)
    - [ブランチ内の全てのコミットがマージされたのか確認](https://github.com/k88hudson/git-flight-rules#check-if-all-commits-on-a-branch-are-merged)
    - [インタラクティブリベースで発生可能なイシュー](https://github.com/k88hudson/git-flight-rules#possible-issues-with-interactive-rebases)
      - [リベース編集画面で 'noop'](https://github.com/k88hudson/git-flight-rules#the-rebase-editing-screen-says-noop)
      - [コンフリクトがある](https://github.com/k88hudson/git-flight-rules#there-were-conflicts)
  - [スタッシュ](https://github.com/k88hudson/git-flight-rules#stash)
    - [全ての変更点をスタッシュ](https://github.com/k88hudson/git-flight-rules#stash-all-edits)
    - [特定ファイルたちをスタッシュ](https://github.com/k88hudson/git-flight-rules#stash-specific-files)
    - [メッセージを一緒にスタッシュ](https://github.com/k88hudson/git-flight-rules#stash-with-message)
    - [特定スタッシュリストで持って来って適用する](https://github.com/k88hudson/git-flight-rules#apply-a-specific-stash-from-list)
  - [検索](https://github.com/k88hudson/git-flight-rules#finding)
    - [あるコミットで文字列を検索したい](https://github.com/k88hudson/git-flight-rules#i-want-to-find-a-string-in-any-commit)
    - [作成者やコミッターを探したい](https://github.com/k88hudson/git-flight-rules#i-want-to-find-by-authorcommitter)
    - [特定ファイルを含めたコミッタをリスト化したい](https://github.com/k88hudson/git-flight-rules#i-want-to-list-commits-containing-specific-files)
    - [I want to view the commit history for a specific function](https://github.com/k88hudson/git-flight-rules#i-want-to-view-the-commit-history-for-a-specific-function)
    - [コミットを参照するタグを探したい](https://github.com/k88hudson/git-flight-rules#find-a-tag-where-a-commit-is-referenced)
  - [サブモジュール](https://github.com/k88hudson/git-flight-rules#submodules)
    - [全てのサブモジュールをクロンする](https://github.com/k88hudson/git-flight-rules#clone-all-submodules)
    - [サブモジュールを削除する](https://github.com/k88hudson/git-flight-rules#remove-a-submodule)
  - [その他](https://github.com/k88hudson/git-flight-rules#miscellaneous-objects)
    - [削除したファイルを復旧](https://github.com/k88hudson/git-flight-rules#restore-a-deleted-file)
    - [タグを消す](https://github.com/k88hudson/git-flight-rules#delete-tag)
    - [消されたタグを復旧](https://github.com/k88hudson/git-flight-rules#recover-a-deleted-tag)
    - [消されたパッチ](https://github.com/k88hudson/git-flight-rules#deleted-patch)
    - [Zipファイルでリポジトリ抽出する](https://github.com/k88hudson/git-flight-rules#exporting-a-repository-as-a-zip-file)
    - [Push a branch and a tag that have the same name](https://github.com/k88hudson/git-flight-rules#push-a-branch-and-a-tag-that-have-the-same-name)
  - [ファイル追跡](https://github.com/k88hudson/git-flight-rules#tracking-files)
    - [ファイルの内容には変更がなくファイル名を前だけ大文字に変更したい](https://github.com/k88hudson/git-flight-rules#i-want-to-change-a-file-names-capitalization-without-changing-the-contents-of-the-file)
    - [Gitプールする時ローカルファイルを上書きしたい](https://github.com/k88hudson/git-flight-rules#i-want-to-overwrite-local-files-when-doing-a-git-pull)
    - [ファイルをローカルでは保存してGitでは消したい](https://github.com/k88hudson/git-flight-rules#i-want-to-remove-a-file-from-git-but-keep-the-file)
    - [特定のバージョンでファイルを復旧したい](https://github.com/k88hudson/git-flight-rules#i-want-to-revert-a-file-to-a-specific-revision)
    - [コミットとブランチの間の特定ファイル変更履歴が必要](https://github.com/k88hudson/git-flight-rules#i-want-to-list-changes-of-a-specific-file-between-commits-or-branches)
    - [I want Git to ignore changes to a specific file](https://github.com/k88hudson/git-flight-rules#i-want-git-to-ignore-changes-to-a-specific-file)
  - [設定](https://github.com/k88hudson/git-flight-rules#configuration)
    - [Gitコマンドいくつかをエイリアス登録したい](https://github.com/k88hudson/git-flight-rules#i-want-to-add-aliases-for-some-git-commands)
    - [リポジトリに空のディレクトリを追加したい](https://github.com/k88hudson/git-flight-rules#i-want-to-add-an-empty-directory-to-my-repository)
    - [リポジトリユーザー名とパスワードをキャッシュしたい](https://github.com/k88hudson/git-flight-rules#i-want-to-cache-a-username-and-password-for-a-repository)
    - [Gitが権限とファイルモード変更を無視するようにしたい](https://github.com/k88hudson/git-flight-rules#i-want-to-make-git-ignore-permissions-and-filemode-changes)
    - [グローバルユーザーに設定したい](https://github.com/k88hudson/git-flight-rules#i-want-to-set-a-global-user)
    - [Gitコマンドに色をつけたい](https://github.com/k88hudson/git-flight-rules#i-want-to-add-command-line-coloring-for-git)
  - [何を間違ったのか分からない](https://github.com/k88hudson/git-flight-rules#ive-no-idea-what-i-did-wrong)
  - [Git ショートカット](https://github.com/k88hudson/git-flight-rules#git-shortcuts)
    - [Git Bash](https://github.com/k88hudson/git-flight-rules#git-bash)
    - [PowerShell on Windows](https://github.com/k88hudson/git-flight-rules#powershell-on-windows)
  - [他のリソース](https://github.com/k88hudson/git-flight-rules#other-resources)
    - [本](https://github.com/k88hudson/git-flight-rules#books)
    - [チュートリアル](https://github.com/k88hudson/git-flight-rules#tutorials)
    - [スクリプトとツール](https://github.com/k88hudson/git-flight-rules#scripts-and-tools)
    - [GUIクライアント](https://github.com/k88hudson/git-flight-rules#gui-clients)

# まとめ
この記事を書く時は日本語バージョンを完成したかったのですが、
翻訳に結構時間がかかることに後で気づいてしまい…
タイトルだけになってしまいましたが、誰かに役に立てれば良いなと思っています。
個人的にはGitの勉強が出来て良かったと思います。

# お知らせ
エイチームグループでは一緒に活躍してくれる優秀な人材を募集中です。
興味のある方はぜひとも[エイチームグループ採用ページ](https://www.a-tm.co.jp/recruit/)（[Webエンジニア詳細ページ](https://www.a-tm.co.jp/recruit/requirements/career/lifestylesupport-webengineer/)）よりお問い合わせ下さい。

# 明日
明日は[@ysysysys](https://qiita.com/ysysysys)さんが書いてくれます！お楽しみに！