gitがスタンダードなので、仕方なくgitを使っている、下駄です。
この間、gitでpull操作をしたら、次のようなエラーが表示された。
$ git pull origin master
> Pulling without specifying how to reconcile divergent branches is
discouraged.You can squelch this message by running one of the following
commands sometime before your next pull:
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.
なんじゃこりゃ!!!
たしか、最近このgitの対象ディレクトリは、少し手作業でいじった記憶があった。
また、ブランチが死んでしまったのか?と思ったが、実はそうではなく、簡単に解決したので、その原因と解決法を書き残しておきます。
原因
このエラーは、正常にpullができないと言っているんだけれど、原因は.gitフォルダのいくつかのファイルやフォルダの、
アクセス権限がrootになっていることが分かった。
どうやら、前回のpullをした時に、rootでログインして、そのままgit pullコマンドを実行してしまったことが根源のようだ。
おかげで、.git内のそれぞれの構成ファイルがユーザー権限からroot権限に切り替わってしまい、
次回、ユーザー権限で実行しようとしたら、アクセス権限がなかったため、ファイルが無い状態のように見えてしまった結果、このエラーが表示された状態でした。
解決
解決は、一旦root権限になり、
chownで、プロジェクトディレクトリ全体(.gitディレクトリも含む)の権限を、ユーザーに切り替えてあげることでエラー解消しました。
$ sudo chown -R user:user /var/www/html/service
対策
たま〜にこういう事あるんだよね〜。
なんて思っていましたが、今回は、自分の開発環境で起きたエラーだったんですが、これが、仕事などでの本番サービスであれば、下手すると、データやファイルの上書きができなくなったり、正常にアクセスができなくなってしまう状態になると、サービス障害に繋がりかねません。
sshログインする時に、rootログインしているサーバーを、ユーザーアクセスに切り替えるべきですね。
セキュリティ的にもそうしたほうがいいし、
root操作は、sudoコマンドで統一したほうがいいかもしれませんね。
久しぶりに、サーバー管理をしっかりしなければ!!!と考えさせられた、エラーでした。
0 件のコメント:
コメントを投稿