Git

Git

【Git】「Permission denied (publickey)」エラーの原因と解決方法

GitHub を使っていると、リモートリポジトリへの接続時に以下のエラーが出ることがあります。git@github.com: Permission denied (publickey).fatal: Could not read from ...
Git

【Git】pull後に意図しないファイル削除が発生したときの復元方法

pull の直後に「意図しないファイルが消えた」ように見える場合でも、原因を切り分けて対処すれば高確率で復元できます。 多くは「pull が作ったマージ/リベース結果で削除が取り込まれた」「fast-forward で上流の削除が反映された...
Git

【Git】mergeコミットを取り消して履歴を元に戻す方法

意図しないマージを取り消して履歴を元に戻したいとき、公開済みのブランチでは履歴を書き換えずに「マージを打ち消す」ことが基本方針になります。 本記事では、公開ブランチで安全に使えるgit revert -mを中心に、未pushならgit re...
Git

【Git】履歴に含まれる機密情報を完全に削除する方法|filter-repoの使い方

リポジトリの履歴にAPIキーやパスワードなどの機密情報を誤ってコミットしてしまった場合、単にrevertで変更を取り消すだけでは不十分です。 過去のコミットに情報が残り続け、クローンやフォークから露出します。本記事では git filter...
Git

【Git】誤ってmaster/mainを削除したときの復旧方法

誤って master / main を削除してしまった——血の気が引く事故ですが、Gitには強力な復旧手段があります。 多くのケースでは、ローカルの reflog、リモートの参照、他クローンの履歴、CIのミラーなどから元の先端コミットを特定...
Git

【Git】submoduleの更新が反映されないときの原因と解決策

サブモジュールの更新が手元に反映されない原因は、単なる「pullし忘れ」だけではありません。 “親リポジトリが指すコミット(ポインタ)”と“サブモジュール側のブランチ先端”の概念差、初期化や再帰更新の不足、detached HEAD、URL...
Git

【Git】push後に別ブランチの変更が混ざってしまったときの対処法

「pushしたら、別ブランチの変更まで混ざってしまった」——共同開発では珍しくありません。 原因の多くは、作業ブランチを切り忘れて別ブランチでコミット・pushしてしまった、PR前に誤ってmergeしてしまった、あるいはrebaseやche...
Git

【Git】コミット履歴が二重に並んでしまったときの原因と修正方法

「コミット履歴が二重に並んで見える」「同じ変更が別のハッシュで繰り返し出てくる」という現象は、単なる見た目の問題ではなく、 履歴の作り方や取り込み方に起因することがほとんどです。典型例は、rebaseやcherry-pickで“同内容だが別...
Git

【Git】stashした内容を失ってしまったときの復元方法

「さっき git stash したはずの変更が消えた?」——そんなときでも、慌てなければ高確率で復元できます。 stashは内部的には“特別なコミット”として保存されており、reflogや“ぶら下がり(dangling)コミット”の探索で辿...
Git

【Git】pull後に大量のマージコミットが発生したときの原因と履歴整理方法

pullのたびにマージコミットが雪だるま式に増え、履歴が読みにくくなることがあります。 これはgit pullの既定動作が「フェッチ+マージ」であることに起因し、ローカルに自分のコミットが残った状態でリモートを取り込むたびに新しいマージコミ...
Git

【Git】ブランチ名を変更したらpushできなくなったときの対処法

ブランチ名をローカルで変更した直後にgit pushがエラーで拒否されるのは、追跡先(upstream)が古いブランチ名のまま残っている、リモート側に同名ブランチが存在する、あるいは保護設定で書き込みが禁止されていることが主な原因です。 ま...
Git

【Git】pushしようとしたら”non-fast-forward”で拒否されたときの解決方法

Gitでgit pushを実行した際にnon-fast-forwardエラーで拒否されるのは、 リモートの履歴が自分のローカルよりも先に進んでいる、あるいは互いに分岐していて「早送り(fast-forward)」で反映できないためです。 解...
Git

【Git】.gitignoreに追加しても既存ファイルが無視されないときの解決方法

Gitで追跡対象から外したいファイルを.gitignoreに追加したのに、すでにリポジトリに登録されているファイルは無視されずステージングされてしまうことがあります。 これはGitの仕組みによるもので、既に追跡中のファイルは.gitigno...
Git

【Git】コンフリクトを解消したのにpullできないときの原因と対策

Gitでコンフリクトを解消してマージ作業を終えたはずなのに、再度git pullやgit pushを試みるとエラーが出て進めないことがあります。 この状況は、コンフリクト解消後の手順抜けや、マージ状態が中途半端なまま残っていることが原因です...
Git

【Git】detached HEAD状態から元の作業ブランチに戻す方法

Gitで過去のコミットやタグをチェックアウトしたときに発生するのがdetached HEAD状態です。 この状態ではHEADが特定のブランチを指しておらず、直接コミットを積んでもブランチに反映されません。 本記事では、この状態から元の作業ブ...
Git

【Git】リモートとローカルの履歴が食い違ったときの同期方法|fetch・pull・rebaseの選び方

共同開発で起きやすいのが「ローカルとリモートの履歴が食い違った」状態です。 直近の変更を取り込まずに作業を進めた結果、pushが拒否されたり、pull後のマージコミットが増えすぎて履歴が読みにくくなることがあります。 本記事では、履歴のズレ...
Git

【Git】リモートブランチを削除しても残ってしまうときの原因と解決方法

Gitで不要になったリモートブランチを削除したのに、ローカル環境でgit branch -rを実行するとまだ残っている——そんな経験はありませんか。 これはリモートブランチが本当に存在しているのではなく、ローカルに古い参照(リモート追跡ブラ...
Git

【Git】巨大ファイルを誤ってコミットしたときの削除方法|BFG Repo-Cleanerとfilter-branch

誤って巨大ファイルをコミットしてしまうと、履歴全体が肥大化してクローンやフェッチが極端に遅くなり、ホスティングのサイズ制限にも引っかかる恐れがあります。 本記事では履歴から完全に痕跡を消すことを目的に、BFG Repo-Cleanerとgi...
Git

【Git】過去の特定ファイルだけ元に戻す方法|checkout・restoreの実例付き

誤って上書きしてしまったファイルや、過去の特定時点の内容に戻したいファイルだけを復元したい場面はGit運用でよくあります。 本記事では、リポジトリ全体ではなく特定ファイルだけを過去の状態に戻す方法を、git checkoutとgit res...
Git

【Git】間違えて別ブランチで作業したときの復旧方法|cherry-pickとrebaseの活用

ブランチを切り替え忘れて別ブランチにコミットしてしまった——実務で頻出するヒューマンエラーです。 本記事では、履歴を安全に移し替える考え方と、git cherry-pickおよびgit rebase --ontoを使った復旧手順を、 失敗し...