tool
Git
分散バージョン管理システム
問題一覧(26)
git commit --amend した後にプッシュできない
amend はコミット SHA を作り直すため、push 済みブランチで amend するとリモートと履歴が分岐し non-fast-forward で拒否される。自分専用ブランチなら --force-with-lease、共有ブランチなら追加コミットで修正するのが原則。
更新: 2026-08-02、タグ: amend、push、rewrite
Git commit できない(Author identity unknown / who you are)
user.name と user.email が未設定だと commit が「Author identity unknown」で失敗する。global もしくはリポジトリ単位で名前とメールを設定すればコミットできる。
更新: 2026-08-05、タグ: commit、config、identity
git branch -d でブランチを削除できない(not fully merged)
削除対象ブランチのコミットが現在のブランチへ未マージのため、Git が安全装置で拒否しています。マージ済みか確認し、本当に破棄してよいときだけ -D で強制削除します。
更新: 2026-08-02、タグ: branch、delete、not-merged
Git で「Your local changes would be overwritten by checkout」でブランチを切り替えられない
未コミットの変更が切替先と衝突すると checkout が中断する仕様。stash か commit で退避するか、捨ててよいなら restore してから切り替える。
更新: 2026-07-14、タグ: checkout、stash、switch
Git cherry-pick でコンフリクトが解決できない
cherry-pick は対象コミットの差分のみを現在ブランチに当て直す操作なので、merge / rebase と同じくコンフリクトが起こる。手動で衝突を解消して git add → git cherry-pick --continue、やめるなら --abort で開始前に戻す。
更新: 2026-08-02、タグ: cherry-pick、conflict、abort
Git clone が SSH で失敗する
clone 時の SSH 失敗は「ホスト鍵未承認」「ポート 22 ブロック」「組織の SAML 強制」など、push と異なる原因が混じることが多い。
更新: 2026-08-09、タグ: auth、ssh、clone
Git でコミットを取り消せない
「直前のコミットを消したい」と「push 済みのコミットを戻したい」では使うコマンドが違う。reset と revert を取り違えると共有ブランチの履歴が壊れる。
更新: 2026-08-02、タグ: commit、reset、revert
Git で「LF will be replaced by CRLF」の警告が消せない
「LF will be replaced by CRLF」は core.autocrlf による改行コード自動変換の予告である。.gitattributes で改行方針を固定するか自動変換を切れば止まる。
更新: 2026-07-29、タグ: crlf、lf、autocrlf
Git で detached HEAD 状態から戻れない・コミットを残せない
タグや SHA を直接 checkout すると detached HEAD になる。何もしていなければ git switch <branch> で戻れるし、コミットしてしまった場合も git switch -c で新ブランチに退避すれば失わない。
更新: 2026-08-02、タグ: head、detached、switch
Git fetch しても新しいリモートブランチが見えない
git fetch で新しいリモートブランチが反映されないのは、--prune 不足で参照が古い・refspec が狭い・別 remote のブランチを見ようとしているの 3 系統。git fetch --all --prune と git branch -r で大半は切り分けられる。
更新: 2026-08-02、タグ: fetch、remote、branch
Git で .gitignore に書いたファイルが無視できない
.gitignore は新規ファイルにのみ作用するため、既に追跡済みのファイルは git rm --cached で一度インデックスから外せば無視できる。書式やパス記法のミスにも注意する。
更新: 2026-08-02、タグ: gitignore、untracked、index
Git で「Unable to create '.git/index.lock': File exists」が解決できない
別の git プロセスが残したロックファイル .git/index.lock が存在すると commit や add が失敗する。動いている git が無いことを確認してからロックファイルを削除すれば復旧する。
更新: 2026-08-12、タグ: index-lock、commit、lock
Git で大きなファイル(100MB 超)が push できない
GitHub は単一ファイル 100MB を上限としており、超えた blob は push が拒否される。履歴に紛れたまま push が通らなくなるので、Git LFS に乗せるか filter-repo で履歴から削除する。
更新: 2026-05-15、タグ: push、large-file、lfs
Git merge でコンフリクトが解決できない
merge 中のコンフリクトは衝突マーカーを編集して git add し、git commit で完了する。中断したい場合は git merge --abort で開始前に戻せる。
更新: 2026-08-02、タグ: merge、conflict、resolution
Git で「fatal: refusing to merge unrelated histories」が解決できない
共通の祖先を持たない 2 つの履歴を merge / pull すると Git 2.9 以降が安全のため拒否する。意図的な統合なら --allow-unrelated-histories を付け、そうでなければ clone し直すか subtree を検討する。
更新: 2026-08-02、タグ: merge、pull、history
Git で「fatal: not a git repository」が解決できない
カレントディレクトリにもその親にも .git が無いために出るエラー。新規なら git init、既存リポジトリなら該当ディレクトリの中へ cd する。
更新: 2026-07-13、タグ: git-init、repository、fatal
Git pull で「Need to specify how to reconcile divergent branches」が消えない
Git 2.27 以降、ローカルとリモートが分岐していると pull の統合方法を明示しないと止まる。pull.rebase を設定するか、その場でオプションを付ける。
更新: 2026-07-12、タグ: git-pull、rebase、merge
git pull が「Your local changes would be overwritten」でできない
未コミットのローカル変更が pull で取り込む差分と同じファイルにあると、git は上書きを避けて中断する。変更を commit するか git stash で退避してから pull するのが安全。
更新: 2026-08-02、タグ: pull、merge、stash
Git push できない(SSH認証で蹴られる)
SSH 鍵が GitHub に登録されていない、または ssh-agent に追加されていないと push が拒否される。最も多い原因と対処を順に確認する。
更新: 2026-06-30、タグ: auth、ssh、push
Git push が rejected(non-fast-forward)で蹴られる
リモートブランチに自分のローカルにない新コミットがあると non-fast-forward で push が拒否される。fetch → rebase / merge してから push し直すのが基本。
更新: 2026-08-02、タグ: push、rejected、rebase
Git rebase でコンフリクトが解消できない
rebase 中のコンフリクトは適用中のコミット単位で解消する必要があり、通常の merge と勝手が異なる。中断したい時は git rebase --abort で開始前に戻せる。
更新: 2026-08-02、タグ: rebase、conflict、merge
Git reset --hard で消したコミットを復元できない
git reset --hard で消えたように見えるコミットも、ガベージコレクションが走る前なら git reflog の SHA から git reset --hard <sha> や git branch <name> <sha> で完全に復旧できる。
更新: 2026-08-02、タグ: reset、reflog、recovery
Git revert でコンフリクトが出て元に戻せない
git revert でコンフリクトが発生したら、衝突箇所を手動で解決して git add → git revert --continue で続行する。途中で諦める場合は git revert --abort で revert 自体を取り消せる。マージコミットを revert するときは -m で親番号の指定が必須。
更新: 2026-08-02、タグ: revert、conflict、undo
Git stash pop でコンフリクトが起きて取り出せない
stash pop でコンフリクトが起きると stash は drop されず stack に残る。衝突を解消して git add したら、忘れずに git stash drop で stack から外す。
更新: 2026-08-02、タグ: stash、conflict、pop
Git submodule のファイルが空のまま更新できない
submodule は clone 時に自動取得されない。--recurse-submodules 付きで clone するか、後から git submodule update --init --recursive を実行する。親リポジトリと submodule は別の HEAD を持つため pull とのセット運用も必要。
更新: 2026-08-02、タグ: submodule、clone、recursive
Git push でタグがリモートに反映されない(タグを push できない)
git push はデフォルトでタグを送らない。git push origin <タグ名> か --tags / --follow-tags で明示的に push する。リモートに同名タグがあると拒否されるため、付け替えは削除してから再 push する。
更新: 2026-06-13、タグ: push、tag、remote