KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

Gitでローカル環境から本番環境に更新をする手順メモ

登録日 :2024/01/28 17:18
カテゴリ :Git

GitHubを経由して本番環境を更新する

私の環境でGitを使ってGitHubから本番環境のプログラムを更新する手順のメモです。

ローカル環境での手順

プログラムを改修したら、ステージにaddする

+[master]
$ git add .

変更点のステータスを確認する

![master]
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   templates/pages/main_home.html

コミットする前に、コミットログのコメントを確認する。日付と履歴をコメントに追記するため(タグでもいいのだと思うけれど)

![master]
$ git log --oneline
617e9ee (HEAD -> master, origin/master) 20240128_02 READMEを修正
de751de first commit

コミットをする。

![master]
$ git commit -m'20240128_03 main_home.htmlの更新履歴を追記'
[master ca5841a] 20240128_03 main_home.htmlの更新履歴を追記
 1 file changed, 8 insertions(+), 3 deletions(-)

念の為、ステータスを確認する

[master]
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

ステージとの差分がなくなっているので、リモートリポジトリにpushする

[master]
$ git push origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 576 bytes | 576.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To https://github.com/(リモートリポジトリURL)
   617e9ee..ca5841a  master -> master

本番環境を更新する手順

リモートリポジトリから、更新されたファイルをpullする

:~/django2/myproject$ git pull
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0
Unpacking objects: 100% (5/5), 556 bytes | 139.00 KiB/s, done.
From https://github.com/(リポジトリURL)
   617e9ee..ca5841a  master     -> origin/master
Updating 617e9ee..ca5841a
Fast-forward
 templates/pages/main_home.html | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

間違えて push (リモートへのアップロードになってしまう)しないように注意。origin masterをつけなければ、タイプミスでpushするリスクは低いと思われるが、念の為。

補足

データベースモデルの更新がある場合は、本番環境でも別途 makemigrationと migrate が必要となる。
ローカル環境はテストのためsqlite3.dbを使っているが、本番環境は postgresqlを使っているためである。

まず仮想環境を有効かし、pythonの参照を確認する。

$ source venv/bin/activate
$ which python

問題なければ、migrateをしてモデルを更新する。

$ python manage.py makemigration
$ python manage.py migrate

プログラムを更新しても、データベースモデルが存在しなければエラーとなるので注意しよう。