共用サーバー環境ではサーバー上に Git を直接導入しづらいため、ローカルで Git 管理し、FTP/SFTP 経由で差分をデプロイする運用が一般的です。このページでは、ローカルリポジトリを安全かつ効率的に扱うためのベストプラクティスと注意点をまとめました。
目次
- .gitignore で不要ファイルを除外する
- 秘密情報・認証情報の漏洩防止 (.env 管理)
- ブランチ戦略とコミットメッセージの書き方
- 改行コード・文字コードの統一
- 大容量ファイル管理 (Git LFS など)
- 差分抽出とデプロイ用フォルダ作成
- マージ/リベース時の衝突回避
- ファイルパーミッションと属性保持
- 自動化スクリプトで差分アップロード
- まとめ & 参考リンク
1. .gitignore で不要ファイルを除外する
- 目的: ローカルにしか存在しない設定ファイルやキャッシュ、ビルド産物などをリポジトリに含めない。
- 例:
gitignore
# OS/エディタ .DS_Store Thumbs.db *.swp # Node.js node_modules/ dist/ # 環境ファイル .env
vendor/ - ポイント
- コミット前に
git status
を確認し、「意図しないファイル」がステージされていないかチェック。 - プロジェクト開始時に
.gitignore
をしっかり整備しておくと、後の手戻りが減る。
- コミット前に
2. 秘密情報・認証情報の漏洩防止 (.env 管理)
- 環境変数ファイル (.env) や API キー、DB パスワードなどは絶対にコミットしない。
- 運用例
.env.example
に変数名のみ記載(値は空)。- 実際の
.env
は.gitignore
に追加し、各メンバーは例をコピーして自分の値を設定。
- 注意
- GitHub 等の公開リポジトリに誤ってプッシュしないよう、コミット直後に
git push --dry-run
等でチェック。 - もし誤って流出した場合は、GitHub のリポジトリ履歴抹消ツールや API キーの再発行 が必要。
- GitHub 等の公開リポジトリに誤ってプッシュしないよう、コミット直後に
3. ブランチ戦略とコミットメッセージの書き方
- ブランチモデル例
main
:本番リリース済みコードdevelop
:次版開発ブランチfeature/xxx
:機能追加ごとに分岐hotfix/yyy
:緊急修正
- コミットメッセージ規約(例: Conventional Commits)
feat: ユーザー登録機能を追加
fix: ログイン後のリダイレクト先を修正
docs: README に環境変数を追記
- ポイント
- 小さな単位でコミットし、後から差分を追いやすくする。
- マージには必ず Pull Request やレビューを挟むことで品質を担保。
4. 改行コード・文字コードの統一
- 改行コード
- Windows: CRLF、macOS/Linux: LF
.gitattributes
に* text=auto eol=lf
を設定し、LF に統一しておくとトラブル回避。
- 文字コード
- ソースは UTF-8 BOM なしを推奨。
.editorconfig
でcharset = utf-8
を明示してエディタ依存をなくす。
5. 大容量ファイル管理 (Git LFS など)
- Git LFS (Large File Storage)
- 画像や動画、重いバイナリを扱う場合に LFS を導入。
- ただし、共用サーバーへ LFS オブジェクトをプッシュするには SSH フルアクセスが必要なケースが多い。
- 代替策
- 大容量アセットは CDN やクラウドストレージ(S3 など)へアップし、Git では URL 管理に留める。
.gitignore
でメディアフォルダを除外し、ビルドステップでデプロイ環境に取り込む方法も一般的。
6. 差分抽出とデプロイ用フォルダ作成
- 差分抽出コマンド例
bash
# 前回デプロイ以降の変更ファイル一覧を取得 git diff --name-only origin/main HEAD \ | xargs -I{} rsync -R {} deploy/
- 手順
git pull
で最新を取得- 差分リストを
rsync --files-from
で一時フォルダへコピー - FTP クライアントで
deploy/
をサーバーへアップロード
- ポイント
- 手動よりスクリプト化し、ヒューマンエラーを減らす。
- rsync 相当の機能を持つ WinSCP や lftp mirror を使うとさらに効率化。
7. マージ/リベース時の衝突回避
- マージ:
git merge feature/xxx
- コンフリクトが起きたら、変更箇所を慎重にマージし、再コミット。
- リベース:
git rebase origin/main
- 履歴をきれいに保てるが、公開済みブランチへのリベースは避ける。
- ポイント
- 頻繁に main や develop を取り込む(
git pull --rebase
)ことで大規模衝突を防ぐ。 - GUI ツール(SourceTree, GitKraken など)で視覚的にマージ作業するとミスが減る。
- 頻繁に main や develop を取り込む(
8. ファイルパーミッションと属性保持
- ローカルとサーバーで異なる属性
- Git は Unix の実行ビット(execute)のみ属性管理。
- HTML/CSS/JS など Web 資産は通常 644、フォルダは 755 にサーバー側で設定。
- デプロイ後の属性調整
- FTP クライアントの「パーミッションを保持」設定、もしくはサーバー側パネルで再設定。
- ポイント
- CGI スクリプトやシェルスクリプトを扱う場合、実行ビットを忘れずに。
.sh
や.pl
ファイルは 755 推奨。
9. 自動化スクリプトで差分アップロード
Windows + WinSCP スクリプト例
txt
# deploy.txt
option batch on
option confirm off
open sftp://user:pass@example.com/ -hostkey="ssh-rsa 2048 xx:xx:xx"
lcd "C:\project\deploy"
cd "/home/user/www"
synchronize remote
close
exit
- タスクスケジューラで夜間実行し、常に最新を反映。
synchronize remote
でローカル→リモートの差分だけ転送。
10. まとめ & 参考リンク
- .gitignore と .gitattributes を整備し、不要ファイル/改行コードを統一。
- 秘密情報は必ずリポジトリ外に管理し、
.env
やキーは含めない。 - 差分抽出 → FTP/SFTP アップロード のワークフローをスクリプト化すれば、安全かつ効率的。
- ブランチ&マージ戦略 を決め、コミット単位を小さく保つことでトラブルを防止。
- 大容量ファイルは Git LFS か クラウドストレージ と組み合わせると管理しやすい。
参考リンク
免責事項
本記事の情報は執筆時点の知見をもとにまとめています。環境やツールのバージョンによっては手順が異なる場合がありますので、導入前に公式ドキュメントをご確認のうえ、自己責任でご利用ください。