0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【エラー解決】本番で git pull が止まる(local changes がある)問題を解消し、以後はコードを触らずにスケジュールを切り替える

Last updated at Posted at 2025-08-29

この記事でやること

✅ エラー内容(Your local changes would be overwritten by merge)

✅ 改善要点(本番で直接編集しない/pull-only 運用)

✅ 改善手順解説(今すぐの復旧/退避してpull/全部捨てる/恒久対策:環境変数で切替)

環境

▪️ サーバ: Xserver(一般的な共有ホスティングでも可)

▪️ PHP: 8.2

▪️ フレームワーク: Laravel 9

▪️ 本番配置: リポ直下に src/(Laravel 本体)

▪️ スケジューラ実行: cron → php artisan schedule:run(毎分)

✅ エラー内容

本番で app/Console/Kernel.php を“テストのために everyMinute に直接変更”した後、 git pull したら止まる。

$ git pull origin main
From github.com:xxxx/your-repo
 * branch            main       -> FETCH_HEAD
Updating 1b88bf0..c133db0
error: Your local changes to the following files would be overwritten by merge:
    src/app/Console/Kernel.php
Please, commit your changes or stash them before you can merge.
Aborting

理由: 本番ワークツリーに“未コミットの変更”があると、git pull は安全のため止まる。

✅ 改善要点(結論)

⭕️ 本番でコードを直接編集しない
→ テスト用の差分は 捨てる or 退避 して pull-only に戻す。

⭕️ 以後のテスト切替は .env の環境変数で行う
→ コードをいじらずに スケジュール(everyMinute / 毎日 03:00 など) を切替できる。

✅ 改善手順解説

すぐ復旧:ローカル差分を捨てて pull

テスト用に触った Kernel.php の ローカル差分は捨てて リモートを取り込む。

# そのファイルの差分だけ捨てる(Git 2.23+)
git restore src/app/Console/Kernel.php
# 古いGitなら
# git checkout -- src/app/Console/Kernel.php

git pull --rebase origin main

他にも複数ファイルを触ってしまって全部捨てたい場合はこれ(⚠️未コミット差分が全消去):

# (※未コミット差分は全消去)
git fetch origin && git reset --hard origin/main

git pull --rebase origin main

今後楽な方法

恒久対策:環境変数でスケジュール切替(本番でコードを触らない)

Kernel を分岐させ、.env のフラグで “毎分テスト” と “本番スケジュール” を切替できるようにします。

app/Console/Kernel.php
protected function schedule(Schedule $schedule): void
{
    if(env('SCHEDULE_DEBUG', false)) {
        // 検証/ローカル向け(毎分)
        $schedule->command('tasks:delete-old-completed')->everyMinute();
        $schedule->command('send:daily-slack')->everyMinute();
    } else {
        // 本番向け(定刻)
        $schedule->command('tasks:delete-old-completed')->dailyAt('03:00');
        $schedule->command('send:daily-slack')->dailyAt('04:00');
    }
}

本番.env

SCHEDULE_DEBUG=false

ローカル/検証 .env

SCHEDULE_DEBUG=true

動作確認

# 次回実行予定
php artisan schedule:list

# その場で実行対象があれば走る
php artisan schedule:run -v
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?