本番サーバーで安全第一でpullする方法|Gitやばい辞典

本番サーバーで git pull を絶対に失敗させないための最短ガイド。現場での予期せぬ変更(ゴミ)を即座に排除し、手元の「正解」を100%確実に反映させる。迷わず、一瞬でリリースを終わらせるための実戦手順です。
本番でpullが失敗する原因
本番サーバーでpullしたあとに、コマンドでがちゃがちゃする現場ありますよね。あれ本当にやめてほしい(笑)。ご丁寧にコマンドの巻物をご用意していることも多いですが、想定外の問題が起きようものなら一瞬で詰みます。環境を作った人以外は操り人形と同じなんですよね。
本番サーバーは常にシンプルで安全でクリーンな状態をキープしていただきたいものです。
pullが失敗する原因は以下のとおり。ほぼ人為的な問題、運用ルールによることが多いのではないでしょうか。今回はこれが起きた時の対象法です。
1. 誰かが本番を直接いじった(最大の原因)
「ちょっとした文言修正」などを本番サーバー上のファイルで直接保存してしまったケース。Gitは「未コミットの変更」と「リモートの更新」の衝突を検知し、プルを拒否します。
2. プログラムがログやキャッシュを吐き出した
アプリケーションが実行中に生成したファイルや、パーミッションの変更などがGitの追跡対象に含まれている場合、それが「未コミットの変更」として扱われ、プルの邪魔をします。こちらは、.gitignoreに追加しておけば解決です。
現在のブランチに修正中のソースがあるかを確認
git status何もなければ: nothing to commit, working tree clean と出力され、そのままプルへ進めます。
誰かが触っていれば: 修正されたファイル名が赤字でリストアップされます。
修正されている「場所(中身)」を知る方法
git diffこれで「どのファイルの、どの行が、どう書き換えられたか」がすべて表示されます。
特定のファイルだけ見たいなら git diff ファイル名 です。
修正をすべてリセットする方法(Pullできる状態にする)
git checkout .
or
git restore . (←新しい方法)注意: これは「ファイルの修正」が消えるので実際は現場のルールにあわせてくださいね!
もし新しいファイルが勝手に作られていた場合: git clean -fd を叩くと、Git管理外のゴミファイルも一掃できます。
安全第一でpullしよう!
git pullここまできたら、通常の環境であればすんなりとpullできるはず。

