4

私は自分の状況を助けるものを見つけることができないようで、私はまだgitに完全に堪能ではありませんが、それを愛しているので、誰かが私を助けてくれることを望んでいました。

git制御下にdevブランチを表示するdevサーバーがあります。次に、安定したバージョンのWebサイトを持つdevブランチに加えて、masterブランチがあります。

次に、本番サーバーに安定したサイトがありますが、処理がどのように行われたかにより、gitバージョン管理下になく、必要なファイルを手動で更新しました。明らかに、安定したマスターブランチファイルは、手動で管理されている本番ファイルのセットにいくぶん似ています。

最終的には、開発サーバーが開発ブランチを反映するように、本番サーバーをgit制御下に置き、マスターブランチを表示したいと考えています。

ただし、本番サーバーでgitリポジトリを設定し、それをマスターブランチとマージする方法がわかりません。誰かがいくつかのポインタ、ヒント、または方向性を提供できますか?

私がオンラインで見つけた唯一のことは、別の2つのリポジトリ(合計3つ)を設定するという方針に沿ったものでした。1つは他の2つの親であり、どういうわけかそれらをすべてそのようにまとめました。私は別の解決策を望んでいました(または少なくとも「そうです、それは正しい」ので、愚かなウサギの穴を掘り下げることはありません(gitを使用して2つのフォルダーをマージすることが何らかのスタートになるかどうかはわかりませんか??)回答がなかったため、それが正しいことであるかどうかを判断するのが困難でした)

皆さんありがとう。

4

3 に答える 3

2

正しく取得した場合、本番サーバーのサイトはマスターブランチ(またはgitリポジトリ内の他のコミット)に基づいていますが、まったく同じではありません。つまり、手動で変更したため、このマニュアルを失いたくない場合があります。変更します。このような場合に私が行うことは次のとおりです。

  1. マスターブランチをチェックアウトするか、クローンを作成します(または本番サーバーのデータが基づいているコミット)。
  2. これで、本番サーバーの「ベース」を備えたクリーンな作業コピーができました。
  3. 本番サーバーからこのクリーンな作業コピーにすべてのデータをコピーします。
  4. git diffすべての変更を調べて、関連する変更をコミットするために使用します。
  5. 手順1でチェックアウトしたベースがマスターでない場合は、マスターを使用git merge masterして手動の変更を簡単にマージできるようになりました。

私はあなたを正しく理解し、これがあなたを正しい方向に導くことを願っています。

于 2012-06-05T20:46:50.870 に答える
0

本番サーバーをバージョン管理する必要はありません。すでにバージョン管理されている必要があります。

あなたがする必要があるのは、本番サーバー、ステージングサーバー、ローカル開発マシンなど、どこにでもデプロイされる単一のリポジトリを持つことです。

ローカルで好きなように作業しますが、本番サーバーでは、単にマスターブランチにとどまります。
ローカルで、何かの作業を終了し、それが完全に機能している、テストされているなどの場合。マスターに(を使用して)リベース(またはマージ)するだけgit push origin masterです。次に、本番サーバーgit fetch && git rebase origin/master(またはプル)で変更を取得します。

于 2012-06-05T20:57:08.030 に答える
0

作業ディレクトリのあるリポジトリに確実にプッシュすることはできません。非ベアリポジトリに関するエラーが発生し、システムとの戦いは潰瘍に悪影響を及ぼします。

あなたがすべきことは次のとおりです。

  1. 本番ファイルをローカルシステムにrsync/scpし、適切なブランチ(マスターなど)とマージします。
  2. マスターブランチを、本番ホストに表示されるリポジトリにプッシュします。
  3. git clone実動マシンから実行します。
  4. 本番ホストで変更を加えていないためgit pull、cronジョブとして設定することもできます。

本番マシンのGit作業ツリーで手動で変更を加えない限りgit pull、最新の変更をロールアウトする場合以外は何もする必要はありません。覚えておいてください。本番システムからプルし、プッシュしないでください。

于 2012-06-05T21:09:35.630 に答える