7

ソース管理、特に git について学ぶ時がきました。

私は多くの Web 開発を行っており、ほとんどの場合、ライブ プロダクション サーバーで多くの開発作業を行っています。私はこれが本当に悪いことを知っています。

ローカルでの開発と、git を使用したライブ サイトへのデプロイがどのように機能するかについて、私はよく理解していません。

それがどのように機能するかは次のとおりです。

  1. Web サーバーにできるだけ近い環境をローカル マシンに設定する

  2. プロジェクトを開発する (またはライブ サーバーから既存のプロジェクトをダウンロードする) git フォルダーを作成します。

  3. 変更をプッシュする準備ができたら、git にコミットします。

私がよくわからないのは、次のことです。

  • 変更をライブ サーバーにプッシュする方法を教えてください。
  • 誤ってローカル コピーを削除してしまった場合はどうすればよいですか?
  • 私のデータベースはどうですか?ローカル マシンに新しいテーブルとデータを追加した場合、ライブ サーバーでもこれらの変更を手動で行う必要がありますか?

編集

はい、申し訳ありませんが、詳細が不十分です。

私はすべてのコーディングを Coda for Mac で行っています。外出先でいくつかの異なるプロジェクトを持っていますが、これらのほとんどは Apache 上で実行されている PHP/YII です。選択したデータベースは MySQL です。

PHP は未加工のままになります。

4

5 に答える 5

7

Web サイトでコンパイルが不要な場合は、Git リポジトリから直接デプロイすることを選択できます。

  • 通常どおり、ローカル ボックスで開発を行います。
  • コードを Github や同様のサイトに頻繁にチェックインする
  • サイトをコンパイルする必要がないため、Git コピーはほぼ準備完了です
  • .git ディレクトリを APACHE サービスから除外するか、 "git clone" の後に削除します。

データベースは別の問題です。あなたはおそらく:

  • UI で変更するのではなく、データベースに変更を加えるスクリプトを作成します。
  • 現在のスキーマを識別するバージョン スタンプをどこかに (おそらくデータベース内に) 含めます。
  • スクリプトにデータベースのバージョン番号を付けます (互換性のために必要な関連するコード リビジョンのインジケーターも保持します - Git 変更セット ID で自動的にスタンプします)
  • 順番に、現在のデータベース リビジョンよりも大きいすべてのスクリプトを実行します (ただし、現在のソフトウェア リビジョンよりも大きくはありません。このプロセスもスクリプト化しました)。

本番環境で行っているかのように、これらすべてを開発マシンで少しずつ行います。いざというときに、まだテストが必要な場合があります。

  • リビジョンにわかりやすいブランチ名 (Release23a など、選択した名前) を付けて、後で見つけられるようにします。
  • 実稼働データベースをテスト環境に複製します (途中でアップグレードをブロックする可能性のあるライブ データの問題は苦痛です)。
  • パッケージ全体をテスト環境にデプロイし、MySQL スクリプトを実行して Git エクスポートを実行します (新しいブランチ名を使用)

その後、通常どおり作業を続け、Git にチェックインします。多くの場合、見苦しいコードを実装している途中で、ライブ サイトへの迅速なパッチが必要になります。しかし、実際のサイトにコードをハッキングするだけではだめです。その代わり:

  • あなたのRelease23aをチェックしてください
  • ホットフィックスを作成する
  • 通常どおりチェックインします (Release23a ブランチに保存されます)。
  • もう一度タグを付けて、Release23b
  • 以前と同様にデプロイ (Release23b)
  • Release23b をメインのコードラインにマージして戻します

分岐についての簡単なメモ。いつでも戻って、日付/時刻でチェックインしたバージョンを取得できますが、名前で見つける方が簡単です。さらに、ブランチを作成すると、そのブランチで作業を行ってから、再度チェックインすることができます。これで、コードラインに分岐ができました。昨日の暑さに変更を加えていますが、それが今日の暑さに自動的に適用されるわけではありません。それが必要な場合は、手動でマージする必要があります。マージとは、「Git クライアント、Release23a/Release23bデルタからのすべてのコード編集を私の最新のホットネスに自動的に適用するようにしてください」と言うプロセスです。

ご覧のとおり、Git で使用できる非常に優れたツールがいくつかあります。ローカル コードを削除することは問題ではありません。これは、問題がなく、頻繁にチェックインしている場合に限ります。

Git にはローカル コミットの概念があることに注意してください。これらは、同期するまで、ハード ドライブのクラッシュから作業を保存しません。

于 2012-09-01T09:23:18.280 に答える
2
  • 変更をライブ サーバーにプッシュする方法を教えてください。

私がお勧めするのは、GitHubを使用してリポジトリをホストするか、独自のプライベート リポジトリを作成することです。次にgit clone、開発フォルダーにリポジトリを作成し、運用サーバーでも同じようにします。

ローカルの開発フォルダーに変更を加え、準備ができたら GitHub リポジトリにプッシュします。次に、サーバーにアクセスして、GitHub リポジトリから変更を取り込みます。

  • 誤ってローカル コピーを削除してしまった場合はどうすればよいですか?

GitHub と実稼働サーバーにも別のものがあります。

  • 私のデータベースはどうですか?ローカル マシンに新しいテーブルとデータを追加した場合、ライブ サーバーでもこれらの変更を手動で行う必要がありますか?

git に入れることができるスクリプトがあり、データベースのレプリケーションが発生していない場合を除き、手動で行う必要があります。

于 2012-09-01T09:08:43.767 に答える
2

いくつかの質問に答えるのに役立ついくつかのリンクを次に示します。

Git を使用する場合: Git ワークフロー

ブランチを維持するためのガイドライン:ブランチ モデル

サーバー更新用:Fabric

于 2012-09-01T09:24:39.817 に答える
1

私はGitの初心者でもあります。ただし、この Git ワークフロー モデルは、一度設定するとユニークでシンプルに見えます。

http://joemaller.com/990/a-web-focused-git-workflow/

これはあなたにとって適切なワークフローではないかもしれませんが、Git の仕組みを理解すれば、メンテナンスの手間がかからないソリューションになるかもしれません。

于 2013-03-12T00:35:10.250 に答える
0

local/git/live 環境の設定についてサポートが必要な場合は、次の場所を参照してください: http://www.mybringback.com/bringers/14509/git-local-and-shared-server-development-environment-with- ssh-セットアップ/

データベース アーキテクチャに関しては、デプロイ スクリプトを作成するか、ローカル環境とライブ環境の両方を手動で変更する必要があります。

うまくいけば、それは役に立ちますか?

于 2013-10-15T03:39:49.610 に答える